我试图在垂直框架中包含一个包含标签的水平框架,但即使显示标签,它也不在正确的位置,并且它的大小仅限于一个标准的QLabel
这是主要课程:
class Launcher(QMainWindow):
def __init__(self):
super().__init__()
self.setFrame() #sets up window's geometry, works fine
self.setContent()
self.show()
def setContent(self):
layout = QBoxLayout(QBoxLayout.TopToBottom)
layout.addWidget(widgets.Logo(self), 0, Qt.AlignTop)
self.setLayout(layout)
这是来自"小部件的导入类"模块
class Logo(QFrame):
def __init__(self, parent):
super().__init__(parent)
layout = QBoxLayout(QBoxLayout.LeftToRight)
text = QLabel("PyTitle", self)
text.setAlignment(Qt.AlignCenter)
text.setFont(QFont("impact", 48))
layout.addWidget(text, 0, Qt.AlignCenter)
self.setLayout(layout)
self.show()
如果我强行调整QLabel和QFrame的大小,它可见,但仍在左上角。
答案 0 :(得分:1)
您不能在QMainWindow
上设置布局,因为它已经内置了一个布局(用于处理停靠窗口小部件,菜单栏,状态栏等)。
相反,设置central-widget,并将所有小部件和布局添加到:
class Launcher(QMainWindow):
...
def setContent(self):
widget = widgets.Logo(self)
self.setCentralWidget(widget)
(PS:您只需要在顶级窗口调用show()
- 对于所有其他子窗口小部件,它是多余的。)