import sys from PyQt5.Qt import * class CLabel(QLabel): def sizeHint(self): return QSize(200, 200) def minimumSizeHint(self): return QSize(100, 100) class Window(QWidget): def __init__(self): super().__init__() self.setup_ui() def setup_ui(self): self.setWindowTitle("Qt桌面应用程序") self.resize(400, 400) self.label_1 = QLabel() self.label_1.setText("标签1") self.label_1.setStyleSheet("background-color:CornflowerBlue") self.label_2 = QLabel() self.label_2.setText("标签2") self.label_2.setStyleSheet("background-color:DarkSeaGreen") self.label_3 = QLabel() self.label_3.setText("标签3") self.label_3.setStyleSheet("background-color:HotPink") self.label_4 = QLabel() self.label_4.setText("标签4") self.label_4.setStyleSheet("background-color:CornflowerBlue") self.label_5 = QLabel() self.label_5.setText("标签5") self.label_5.setStyleSheet("background-color:DarkSeaGreen") self.label_6 = QLabel() self.label_6.setText("标签6") self.label_6.setStyleSheet("background-color:HotPink") self.box_layout_1 = QBoxLayout(QBoxLayout.TopToBottom) self.box_layout_1.addWidget(self.label_1) self.box_layout_1.addWidget(self.label_2) self.box_layout_1.addWidget(self.label_3) self.setLayout(self.box_layout_1) self.button_1 = QPushButton() self.button_1.setText("B") self.box_layout_1.addWidget(self.button_1) def button_clicked(): # self.box_layout_1.removeWidget(self.label_1) # self.label_1 = CLabel() # self.label_1.setText("标签1") # self.label_1.setStyleSheet("background-color:CornflowerBlue") # self.box_layout_1.insertWidget(0, self.label_1) # self.label_1.setSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed) # self.label_1.setSizePolicy(QSizePolicy.Minimum,QSizePolicy.Minimum) # self.label_1.setSizePolicy(QSizePolicy.Maximum,QSizePolicy.Maximum) # self.label_1.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Preferred) # self.label_1.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding) # self.label_1.setSizePolicy(QSizePolicy.MinimumExpanding,QSizePolicy.MinimumExpanding) # self.label_1.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored) self.size_policy = QSizePolicy() self.size_policy.setRetainSizeWhenHidden(True) # QSizePolicy设置Ignored后,控件最小可以消失 self.size_policy.setVerticalPolicy(QSizePolicy.Ignored) self.size_policy.setHorizontalPolicy(QSizePolicy.Ignored) self.label_1.setSizePolicy(self.size_policy) self.label_1.hide() self.button_1.clicked.connect(button_clicked) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())