From 67a15141aa8b29a20bcbac485f25a0d35b7e4fdb Mon Sep 17 00:00:00 2001 From: En Yi Date: Fri, 6 Jul 2018 17:56:44 +0800 Subject: [PATCH] Add graphic layout --- graphic_components/board.py | 8 +++++--- main.py | 25 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/graphic_components/board.py b/graphic_components/board.py index a468ecc..baf29b7 100644 --- a/graphic_components/board.py +++ b/graphic_components/board.py @@ -1,10 +1,10 @@ from PyQt5.QtGui import QPainter, QBrush, QPen, QColor, QFont from PyQt5.Qt import QApplication, QTimer -from PyQt5.QtWidgets import (QGraphicsScene, QGraphicsView, QGraphicsItem, +from PyQt5.QtWidgets import (QGraphicsScene, QGraphicsWidget, QGraphicsItem, QGraphicsLineItem, QGraphicsRectItem, QGraphicsObject, QGraphicsItemGroup, QGraphicsPathItem) from PyQt5.QtCore import (QAbstractAnimation, QObject, QPointF, Qt, QRectF, QLineF, - QPropertyAnimation, pyqtProperty, pyqtSignal) + QPropertyAnimation, pyqtProperty, pyqtSignal, QSizeF) from graphic_components import buttons from general.extras import bound_value from gameplay import sudoku_gameplay as sdk @@ -12,7 +12,7 @@ import numpy as np import sys, math -class BoxBoard(QGraphicsObject): +class BoxBoard(QGraphicsWidget): # Initialisation def __init__(self, width, height, parent = None): @@ -45,6 +45,8 @@ class BoxBoard(QGraphicsObject): if line.length() > 1: painter.drawLine(line) + def sizeHint(self, which, constraint=None): + return(QSizeF(self.width+10, self.height+10)) class SudokuGrid(QGraphicsObject): # Prepare the signal diff --git a/main.py b/main.py index e165b35..adc68d3 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ from PyQt5.QtGui import QPainter, QBrush, QPen, QColor, QFont from PyQt5.Qt import QApplication, QTimer from PyQt5.QtWidgets import (QGraphicsScene, QGraphicsView, QGraphicsItem, QGraphicsLineItem, QGraphicsRectItem, QGraphicsObject, - QGraphicsItemGroup, QGraphicsPathItem) + QGraphicsItemGroup, QGraphicsWidget, QGraphicsLinearLayout) from PyQt5.QtCore import (QAbstractAnimation, QObject, QPoint, QPointF, Qt, QRectF,QLineF, QPropertyAnimation, pyqtProperty, pyqtSignal) import sys, math @@ -16,18 +16,28 @@ class SudokuWindow(QGraphicsView): super().__init__() # Set up the Scene to manage the GraphicItems - self.scene = QGraphicsScene(0, 0, 500, 500, self) + self.scene = QGraphicsScene(0, 0, 400, 500, self) + + self.setScene(self.scene) self.setSceneRect(self.scene.sceneRect()) + self.gameboard = board.BoxBoard(400, 400) + self.menuboard = board.BoxBoard(400, 50) + self.gamegrid = board.SudokuGrid(450, 450) + self.numring = board.NumberRing() + self.layout = QGraphicsLinearLayout(Qt.Vertical) + self.layout.addItem(self.gameboard) + self.layout.addItem(self.menuboard) + self.form = QGraphicsWidget() + self.form.setLayout(self.layout) + #self.layout.addItem(self.gamegrid) #self.button1 = buttons.animBox(0, 0, 20, 20, 'a') #self.scene.addItem(self.button1) - self.gameboard = board.BoxBoard(450, 450) - self.menuboard = board.BoxBoard(400, 100) - self.gamegrid = board.SudokuGrid(450, 450) - self.numring = board.NumberRing() - self.scene.addItem(self.gameboard) + + #self.scene.addItem(self.gameboard) + self.scene.addItem(self.form) self.scene.addItem(self.gamegrid) self.scene.addItem(self.numring) self.setBackgroundBrush(QBrush(Qt.black)) @@ -36,7 +46,6 @@ class SudokuWindow(QGraphicsView): self.gamegrid.buttonClicked.connect(self.show_number_ring) self.numring.connect_button_signals(self.select_ring_number) - self.gameboard self.ensureVisible(self.scene.sceneRect(), 50, 50) self.fitInView(self.gameboard.boundingRect(), Qt.KeepAspectRatio)