[英]How to keep a widget in PyQt5 cramming the screen?
當我得知了QHBoxLayout
和QVBoxLayout
在PyQt5
,我發現它無法使用他們QMainWindow
。他們必須依靠QWidget
。這里是我的代碼:
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QLabel,QHBoxLayout,QVBoxLayout
class Example(QMainWindow) :
def __init__(self) :
super().__init__()
self.build_inter()
def build_inter(self) :
self.setGeometry(300,300,300,220)
self.root_widget=QWidget(self)
self.root_widget.resize(self.size())
self.name_label=QLabel("Wang Suyu",self.root_widget)
self.age_label=QLabel("14",self.root_widget)
hbox=QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.name_label)
hbox.addWidget(self.age_label)
vbox=QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.root_widget.setLayout(vbox)
self.show()
if __name__ == '__main__':
app=QApplication(sys.argv)
example=Example()
sys.exit(app.exec_())
但是,作為一個小部件,當我用鼠標更改屏幕大小時,我無法讓QWidget
自動填充屏幕root_widget
和兩個標簽將保持原始狀態。
我應該怎么做? 我真的不想更改Example
的超類
QMainWindow
是一個特殊的小部件,因為它有默認的元素,如QStatusBar
, QToolBar
等,如果你想放置一個小部件,你應該把你必須使用一個widget setCentralWidget()
方法。
在您的情況下:
class Example(QMainWindow) :
def __init__(self) :
super().__init__()
self.build_inter()
def build_inter(self) :
self.setGeometry(300,300,300,220)
self.root_widget=QWidget(self)
self.setCentralWidget(self.root_widget)
self.name_label=QLabel("Wang Suyu",self.root_widget)
self.age_label=QLabel("14",self.root_widget)
hbox=QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.name_label)
hbox.addWidget(self.age_label)
vbox=QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.root_widget.setLayout(vbox)
self.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.