diff --git a/.gitignore b/.gitignore index 7c26d1a..b6bd61b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ venv/ demos/ .idea/ -*.__pycache__/ +*/__pycache__/* diff --git a/graphic_components/board.py b/graphic_components/board.py index c4fb82b..cfe43e4 100644 --- a/graphic_components/board.py +++ b/graphic_components/board.py @@ -1,5 +1,5 @@ from PyQt5.QtGui import QPainter, QBrush, QPen, QColor, QFont -from PyQt5.QtWidgets import (QGraphicsScene, QGraphicsWidget, QGraphicsItem, +from PyQt5.QtWidgets import (QSizePolicy, QGraphicsWidget, QGraphicsItem, QGraphicsLineItem, QGraphicsRectItem, QGraphicsObject, QGraphicsItemGroup, QGraphicsPathItem, QGraphicsLinearLayout) from PyQt5.QtCore import (QAbstractAnimation, QObject, QPointF, Qt, QRectF, QLineF, @@ -16,6 +16,12 @@ class BoxBoard(QGraphicsWidget): self.width = width self.height = height self.circumference = 2*(width+height) + self.setMinimumSize(QSizeF(width, height)) + self.setMaximumSize(QSizeF(width, height)) + + self.size_policy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) + self.size_policy.setHeightForWidth(True) + self.setSizePolicy(self.size_policy) # Set up pens for drawing self.default_pen = QPen() @@ -31,8 +37,8 @@ class BoxBoard(QGraphicsWidget): self.line_order = [self.up, self.right, self.down, self.left] # Reimplemented boundingRect - def boundingRect(self): - return QRectF(-5, -5, self.width+10, self.height+10) + #def boundingRect(self): + # return QRectF(-5, -5, self.width+10, self.height+10) # Reimplemented paint def paint(self, painter, style, widget=None): @@ -41,9 +47,11 @@ class BoxBoard(QGraphicsWidget): if line.length() > 1: painter.drawLine(line) #painter.drawRect(self.geometry()) + super().paint(painter, style, widget) - def sizeHint(self, which, constraint=None): - return QSizeF(self.width, self.height) + #def sizeHint(self, which, constraint=None): + # super().sizeHint(which, constraint) + # return QSizeF(self.width, self.height) class GameBoard(BoxBoard): diff --git a/graphic_components/menu_graphics.py b/graphic_components/menu_graphics.py index 70fdc76..68cac6d 100644 --- a/graphic_components/menu_graphics.py +++ b/graphic_components/menu_graphics.py @@ -1,5 +1,5 @@ from PyQt5.QtGui import QPainter, QBrush, QPen, QColor, QFont -from PyQt5.QtWidgets import (QGraphicsScene, QGraphicsWidget, QGraphicsItem, +from PyQt5.QtWidgets import (QSizePolicy, QGraphicsWidget, QGraphicsItem, QGraphicsLineItem, QGraphicsRectItem, QGraphicsObject, QGraphicsItemGroup, QGraphicsLayoutItem) from PyQt5.QtCore import (QAbstractAnimation, QObject, QPointF, Qt, QRectF, QLineF, @@ -21,25 +21,17 @@ class TimerDisplayer(QGraphicsWidget): self.timer_box = QRectF(0, 0, self.width, self.height) - #self.setGeometry(self.timer_box) - #print(self.geometry().width()) + self.setMinimumSize(QSizeF(self.width, self.height)) + self.setMaximumSize(QSizeF(self.width, self.height)) + + self.size_policy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) + self.size_policy.setHeightForWidth(True) + self.setSizePolicy(self.size_policy) def paint(self, painter, style, widget=None): - box = self.geometry() + box = self.timer_box #print(self.size().width()) painter.setPen(self.box_pen) painter.drawRect(box) painter.drawText(box, Qt.AlignCenter, "00:00") - def boundingRect(self): - return QRectF(QPointF(0, 0), self.geometry().size()) - - def sizeHint(self, which, constraint=None): - return QSizeF(self.width, self.height) - #print(self.geometry().size().width(), self.geometry().size().height()) - #return self.geometry().size() - - def setGeometry(self, rect): - self.prepareGeometryChange() - QGraphicsLayoutItem.setGeometry(self, rect) - self.setPos(rect.topLeft()) diff --git a/main.py b/main.py index 800362a..8589e58 100644 --- a/main.py +++ b/main.py @@ -16,43 +16,38 @@ class SudokuWindow(QGraphicsView): super().__init__() # Set up the Scene to manage the GraphicItems - self.scene = QGraphicsScene(0, 0, 400, 500, self) + self.scene = QGraphicsScene(0, 0, 420, 500, self) self.setScene(self.scene) self.setSceneRect(self.scene.sceneRect()) self.gameboard = board.GameBoard(400, 400) self.menuboard = board.MenuBoard(400, 80) + #self.gameboard = board.BoxBoard(400, 400) + #self.menuboard = board.BoxBoard(400, 50) + + self.form = QGraphicsWidget() self.layout = QGraphicsLinearLayout(Qt.Vertical) self.layout.addItem(self.gameboard) self.layout.addItem(self.menuboard) - self.form = QGraphicsWidget() + self.layout.setSpacing(10) + self.layout.setContentsMargins(10, 10, 10, 0) self.form.setLayout(self.layout) self.scene.addItem(self.form) self.setBackgroundBrush(QBrush(Qt.black)) self.setRenderHint(QPainter.Antialiasing) - self.setGeometry(0, 0, 600, 600) + #self.setGeometry(self.scene.sceneRect().toRect()) - self.ensureVisible(self.scene.sceneRect(), 10, 10) - self.fitInView(self.gameboard.boundingRect(), Qt.KeepAspectRatio) + #self.ensureVisible(self.scene.sceneRect(), 50, 50) + self.fitInView(self.form.boundingRect(), Qt.KeepAspectRatio) self.show() - - - print('menuboard') - menubox = self.menuboard.geometry() - print(menubox.left(), menubox.top()) - print(menubox.width(), menubox.height()) - - print('menuboard') - gamebox = self.gameboard.geometry() - print(gamebox.left(), gamebox.top()) - print(gamebox.width(), gamebox.height()) + print(self.menuboard.geometry().height()) + print(self.gameboard.boundingRect().height()) if __name__ == "__main__": app = 0 app = QApplication(sys.argv) ex = SudokuWindow() - sys.exit(app.exec_()) \ No newline at end of file