Add graphic layout

master
En Yi 2018-07-06 17:56:44 +08:00
parent caa3077499
commit 67a15141aa
2 changed files with 22 additions and 11 deletions

View File

@ -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

25
main.py
View File

@ -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)