SudokuGame/main.py

60 lines
2.1 KiB
Python

from PyQt5.QtGui import QPainter, QBrush
from PyQt5.Qt import QApplication
from PyQt5.QtWidgets import QGraphicsScene, QGraphicsView, QGraphicsWidget, QGraphicsLinearLayout
from PyQt5.QtCore import Qt
import sys
from graphic_components import board
class SudokuWindow(QGraphicsView):
"""
The main window that shows the graphical components.
Contains the Sudoku Board and the Menu Board.
"""
def __init__(self):
super().__init__()
# Set up the Scene to manage the GraphicItems
self.scene = QGraphicsScene(0, 0, 500, 600, self)
self.setScene(self.scene)
self.setSceneRect(self.scene.sceneRect())
# Add the Boards to the form with a vertical layout
self.form = QGraphicsWidget()
self.layout = QGraphicsLinearLayout(Qt.Vertical)
self.gameboard = board.GameBoard(400, 400)
self.menuboard = board.MenuBoard(400, 80)
self.layout.addItem(self.gameboard)
self.layout.addItem(self.menuboard)
self.layout.setSpacing(50)
self.layout.setContentsMargins(50, 50, 50, 0)
self.form.setLayout(self.layout)
self.scene.addItem(self.form)
# Setting the view
self.setBackgroundBrush(QBrush(Qt.black))
self.setRenderHint(QPainter.Antialiasing)
self.fitInView(self.scene.sceneRect(), Qt.KeepAspectRatio)
self.show()
# Cross-Board signal connections
self.gameboard.gridDrawn.connect(lambda: self.menuboard.show_children(True))
self.gameboard.newGameSelected.connect(self.menuboard.set_difficulty_text)
self.gameboard.sudokuDone.connect(self.menuboard.finish_the_game)
self.menuboard.diff_display.notFocus.connect(self.gameboard.game_refocus)
self.menuboard.diff_display.difficultySelected.connect(self.gameboard.new_game)
def resizeEvent(self, event):
self.fitInView(self.scene.sceneRect(), Qt.KeepAspectRatio)
super().resizeEvent(event)
if __name__ == "__main__":
app = 0
app = QApplication(sys.argv)
ex = SudokuWindow()
sys.exit(app.exec_())