当前位置:网站首页>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_())
边栏推荐
- [azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
- Write in front -- Talking about program development
- Welcome to CSDN markdown editor
- 【Azure微服务 Service Fabric 】在SF节点中开启Performance Monitor及设置抓取进程的方式
- Pdf document signature Guide
- operator
- Leetcode SQL first day
- ByteDance Android interview, summary of knowledge points + analysis of interview questions
- 【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)
- Revit secondary development - modify wall thickness
猜你喜欢

Use json Stringify() to realize deep copy, be careful, there may be a huge hole

用语雀写文章了,功能真心强大!

Display optimization when the resolution of easycvr configuration center video recording plan page is adjusted
![[JDBC Part 1] overview, get connection, CRUD](/img/53/d79f29f102c81c9b0b7b439c78603b.png)
[JDBC Part 1] overview, get connection, CRUD

应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设

TCP/IP 协议栈

How to choose the appropriate automated testing tools?

Px4 autonomous flight

如何选择合适的自动化测试工具?

反爬通杀神器
随机推荐
Overseas agent recommendation
Record problems fgui tween animation will be inexplicably killed
如何选择合适的自动化测试工具?
Aspose. Word operation word document (I)
Two kinds of updates lost and Solutions
What if the win11u disk does not display? Solution to failure of win11 plug-in USB flash disk
How to quickly check whether the opening area ratio of steel mesh conforms to ipc7525
怎样写一个增广矩阵到txt文件中
Remember that a development is encountered in the pit of origin string sorting
使用 CustomPaint 绘制基本图形
UWA Q & a collection
C development - interprocess communication - named pipeline
[azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
Robot autonomous exploration series papers environment code
Px4 autonomous flight
How to turn on win11 game mode? How to turn on game mode in win11
Matplotlib drawing interface settings
Vs custom template - take the custom class template as an example
How does win11 unblock the keyboard? Method of unlocking keyboard in win11
TCP/IP 协议栈