我正在尝试设置一个GUI,它将在PyQt5中包含多个页面。该窗口的最小尺寸为800x600,但可以自定义。我希望窗口上的大多数元素,但不是所有元素都能随之缩放。我已经有了一个解决方案,但我觉得它不是很优雅。在
下面是800x600的窗口示例:
这是缩放后的另一个例子
我尝试过使用QVBoxLayout,但是在这个系统中,我无法保持布局的原样(并不是说这是不可能的),而是所有的小部件都变得集中并且宽度相同。在以后的日子里,我也可能会考虑将一些小部件添加到与某些现有部件相同的y值的一侧,这是另一件我不确定如何处理方框布局的事情。在
以下是相关代码:
class CreatePage(QWidget):
def __init__(self, parent=None):
super().__init__()
self.initUI()
def initUI(self):
self.homeBtn = QPushButton("Home", self)
self.homeBtn.move(10, 10)
self.frontLabel = QLabel("Front", self)
self.frontLabel.setFont(QFont("Decorative", 20))
self.frontEdit = QTextEdit(self)
self.frontEdit.setFont(QFont("Decorative", 11))
self.backLabel = QLabel("Back", self)
self.backLabel.setFont(QFont("Decorative", 20))
self.backEdit = QTextEdit(self)
self.backEdit.setFont(QFont("Decorative", 11))
def paintEvent(self, e):
qp = QPainter()
qp.setFont(QFont("Decorative", 20))
size = self.size()
h = size.height()
w = size.width()
frontW = qp.fontMetrics().width("Front")
self.frontLabel.move((w/2) - (frontW/2) , h/15)
#I use fontMetrics to determine the width of the text
#I then use this information to centre the text
self.frontEdit.move(50, h/15 + 40)
self.frontEdit.resize(w-100, h/3)
backW = qp.fontMetrics().width("Back")
self.backLabel.move((w/2) - (backW/2), h/2)
self.backEdit.move(50, h/2 + 40)
self.backEdit.resize(w-100, h/3)
很抱歉,我对PyQt和GUI编程还不熟悉。不管怎样,我用来调整大小和移动小部件的公式是非常随意的。有人知道更好的方法来达到这个效果吗?在
试试看:
相关问题 更多 >
编程相关推荐