1. 程式人生 > >PYQT5 動態刪除增加控制元件(不適用佈局情況)

PYQT5 動態刪除增加控制元件(不適用佈局情況)

工具/版本

(1)安裝環境:Windows7 64bit

(2)使用版本Python3.6

(3)PYQT5

(4)eric6

刪除控制元件:

self.buttom.deleteLater()

關閉控制元件:

self.button.close()或者self.button.hide()

重新顯示控制元件:

如果是刪除,需要重新建立控制元件 然後self.button.show()

如果是關閉,或者隱藏,self.show()

此處需注意:

如果多次建立相同名稱的控制元件,操作建立的控制元件會顯示異常,需要刪除再建立

# coding=utf-8

from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
import sys


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(550, 300)
        self.setWindowTitle('動態刪除增加控制元件測試')
        self.CreatUI()

    def CreatUI(self):
        self.lb1 = QPushButton("按鍵1", self)
        self.lb1.setGeometry(100, 200, 100, 50)
        self.lb2 = QPushButton("按鍵1", self)
        self.lb2.setGeometry(280, 200, 100, 50)

        self.bt1 = QPushButton('刪除', self)
        self.bt2 = QPushButton('新建', self)

        self.bt1.move(100, 20)
        self.bt2.move(280, 20)

        self.bt1.clicked.connect(self.deleteWidget)
        self.bt2.clicked.connect(self.addWidget)

    def deleteWidget(self):
        self.lb1.deleteLater()
        self.lb2.deleteLater()
        self.bt1.deleteLater()

    def addWidget(self):
        self.CreatUI()
        self.showWidget()

    def closeWidget(self):
        # self.lb1.close()
        # self.lb2.close()
        # self.bt1.close()
        # 或者使用hide
        self.lb1.hide()
        self.lb2.hide()
        self.bt1.hide()

    def showWidget(self):
        self.lb1.show()
        self.lb2.show()
        self.bt1.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())