当前位置:网站首页>Pyqt GUI interface and logic separation

Pyqt GUI interface and logic separation

2022-07-07 22:27:00 Eva215665

analysis Visual design form Qt Designer Design GUI Single form program This example , You can find , It achieved the right Ui_FormHello Use , Generated GUI Program , But it's flawed . because appMain1.py It's completely a procedural procedure , It is difficult to realize the effective encapsulation of business logic and functions . This paper introduces the design method of separating single inheritance interface from business logic .
Still in Visual design form Qt Designer Design GUI Single form program Used in the example project Next , Write another file appMain.py, In this file
(1) Define the form business logic class QmyWidget, Single inheritance QWidget class
(2) stay QmyWidget In the constructor of , First, call the constructor of the parent class , such self It's already a QWidget Object
(3) Show create a Ui_FormHello Private properties of class self.__ui, This private property contains all components on the form , Only through this object can the component be accessed , Including calling setupUi function
(4)self.__ui It's a private property , Cannot access outside of class , To access components , You need to define interface functions to realize a series of functions . For example, designing public functions setBtnText Used to set the text on the button

import sys
from PyQt5.QtWidgets import QWidget, QApplication
from FormHello import Ui_FormHello

class QmyWidget (QWidget):
    def __init__(self, parent = None):
        super().__init__(parent) # adopt super Call parent constructor , establish QWidget forms , such self It's just a form object 
        self.__ui = Ui_FormHello() # establish UI object , Private property __ui Including visual design UI All components on the form , So only through 
        # self.__ui To access the components on the form , Including calling setupUi function 
        #  and __ui It's a private property , Create objects outside the class , You cannot access components on the form through objects , To access components , You can define interfaces , Realization function 
        self.__ui.setupUi(self) # establish UI
        self.__ui.LabHello.setText(" Single inherited QmyWidget")

    #  Definition setBtnText The interface function , Used to set the text on the button 
    def setBtnText(self, aText):
        self.__ui.btnClose.setText(aText)

#  establish app
if __name__ == "__main__":
    app = QApplication(sys.argv) # establish app, use QApplication class 
    myWidget = QmyWidget()
    myWidget.setBtnText(" Indirect settings ")
    myWidget.show()
    sys.exit(app.exec_())
原网站

版权声明
本文为[Eva215665]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130605187890.html