子类 QFrame 不适应它的布局
Subclassed QFrame not adjusting to it's layout
我试图在垂直框架内包含一个包含标签的水平框架,但即使显示了标签,它的位置也不正确,并且限制为标准 QLabel 的大小
这是主要的class:
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)
这是从 "widgets" 模块
导入的 class
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 的大小,它是可见的,但仍然在左上角。
您不能在 QMainWindow
上设置布局,因为它已经内置了布局(用于处理停靠栏小部件、菜单栏、状态栏等)。
相反,设置 central-widget,并将所有小部件和布局添加到其中:
class Launcher(QMainWindow):
...
def setContent(self):
widget = widgets.Logo(self)
self.setCentralWidget(widget)
(PS:您只需在顶层调用 show()
window - 对于所有其他子部件,这是多余的。
我试图在垂直框架内包含一个包含标签的水平框架,但即使显示了标签,它的位置也不正确,并且限制为标准 QLabel 的大小
这是主要的class:
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)
这是从 "widgets" 模块
导入的 classclass 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 的大小,它是可见的,但仍然在左上角。
您不能在 QMainWindow
上设置布局,因为它已经内置了布局(用于处理停靠栏小部件、菜单栏、状态栏等)。
相反,设置 central-widget,并将所有小部件和布局添加到其中:
class Launcher(QMainWindow):
...
def setContent(self):
widget = widgets.Logo(self)
self.setCentralWidget(widget)
(PS:您只需在顶层调用 show()
window - 对于所有其他子部件,这是多余的。