1 回答

TA貢獻(xiàn)1846條經(jīng)驗 獲得超7個贊
QLabel 根據(jù)(可能的)父布局管理器調(diào)整其內(nèi)容,但您沒有使用任何內(nèi)容,因此它不知道如何正確顯示自己或調(diào)整其大小來做到這一點(diǎn)。
最簡單的解決方案是調(diào)用label.adjustSize()
,這將導(dǎo)致標(biāo)簽自身調(diào)整大小,以便能夠顯示其內(nèi)容。
但是,這不是一個好主意:您正在嘗試為小部件使用固定位置(由于很多原因,這通常被認(rèn)為是一件壞事);結(jié)果將是,如果標(biāo)簽文本太大并且用戶調(diào)整窗口大小,文本將不會完全可見,標(biāo)簽也不知道如何調(diào)整大小或最終包裝其內(nèi)容以確保所有顯示其文本。
更好的方法是使用布局管理器,但這是為更簡單的小部件(如 QWidget 或 QDialog)保留的解決方案;QMainWindow不能那樣工作,它需要設(shè)置一個中央小部件以確保其內(nèi)容得到正確顯示和管理。
在您的情況下,您可以簡單地使用self.setCentralWidget(label)
,但這會阻止您將任何其他小部件添加到您的窗口。
應(yīng)該使用“容器”小部件,并且該小部件將設(shè)置為主窗口的中心;然后您可以為該小部件設(shè)置布局并為其添加標(biāo)簽:
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)
# ...
添加回答
舉報