簡體   English   中英

如何讓PyQt5中的小部件塞滿屏幕?

[英]How to keep a widget in PyQt5 cramming the screen?

當我得知了QHBoxLayoutQVBoxLayoutPyQt5 ,我發現它無法使用他們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是一個特殊的小部件,因為它有默認的元素,如QStatusBarQToolBar等,如果你想放置一個小部件,你應該把你必須使用一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM