1 回答

TA贡献1846条经验 获得超7个赞
QLabel 根据(可能的)父布局管理器调整其内容,但您没有使用任何内容,因此它不知道如何正确显示自己或调整其大小来做到这一点。
最简单的解决方案是调用label.adjustSize()
,这将导致标签自身调整大小,以便能够显示其内容。
但是,这不是一个好主意:您正在尝试为小部件使用固定位置(由于很多原因,这通常被认为是一件坏事);结果将是,如果标签文本太大并且用户调整窗口大小,文本将不会完全可见,标签也不知道如何调整大小或最终包装其内容以确保所有显示其文本。
更好的方法是使用布局管理器,但这是为更简单的小部件(如 QWidget 或 QDialog)保留的解决方案;QMainWindow不能那样工作,它需要设置一个中央小部件以确保其内容得到正确显示和管理。
在您的情况下,您可以简单地使用self.setCentralWidget(label)
,但这会阻止您将任何其他小部件添加到您的窗口。
应该使用“容器”小部件,并且该小部件将设置为主窗口的中心;然后您可以为该小部件设置布局并为其添加标签:
def window():
app = QApplication(sys.argv)
win = QMainWindow()
central = QWidget()
win.setCentralWidget(central)
layout = QVBoxLayout()
central.setLayout(layout)
# alternatively, the above is the same as this:
# layout = QVBoxLayout(central)
label = QtWidgets.QLabel(win)
label.setText("my first label!")
layout.addWidget(label)
# ...
添加回答
举报