Fixup layout?

master
En Yi 2018-07-09 16:04:37 +08:00
parent 76dd861bc1
commit dea4168dce
4 changed files with 34 additions and 39 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
venv/
demos/
.idea/
*.__pycache__/
*/__pycache__/*

View File

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

View File

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

29
main.py
View File

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