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)
# ...
添加回答
舉報