当前位置:网站首页>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_())
边栏推荐
- 强化学习-学习笔记9 | Multi-Step-TD-Target
- Latest Android advanced interview questions summary, Android interview questions and answers
- #DAYU200体验官#MPPT光伏发电项目 DAYU200、Hi3861、华为云IotDA
- OpeGL personal notes - lights
- Failed to initialize rosdep after installing ROS
- Interview question 01.02 Determine whether it is character rearrangement - auxiliary array algorithm
- OpenGL homework - Hello, triangle
- php 记录完整对接腾讯云直播以及im直播群聊 所遇到的坑
- Why can't win11 display seconds? How to solve the problem that win11 time does not display seconds?
- 用语雀写文章了,功能真心强大!
猜你喜欢
How does win11 unblock the keyboard? Method of unlocking keyboard in win11
Remember aximp once Use of exe tool
What does it mean to prefix a string with F?
Remember an experience of using selectmany
Tcp/ip protocol stack
【Azure微服务 Service Fabric 】在SF节点中开启Performance Monitor及设置抓取进程的方式
IP network active evaluation system -- x-vision
Overseas agent recommendation
Implementation method of data platform landing
Embedded development: how to choose the right RTOS for the project?
随机推荐
Node:504 error reporting
It's worth seeing. Interview sites and interview skills
MIT6.S081-Lab9 FS [2021Fall]
OpenGL configure assimp
The latest Android interview collection, Android video extraction audio
Get the week start time and week end time of the current date
PDF文档签名指南
OpenGL homework - Hello, triangle
Latest Android advanced interview questions summary, Android interview questions and answers
npm uninstall和rm直接删除的区别
MIT6.S081-Lab9 FS [2021Fall]
使用 CustomPaint 绘制基本图形
Cataloger integrates lidar and IMU for 2D mapping
Interview question 01.02 Determine whether it is character rearrangement - auxiliary array algorithm
VTOL in Px4_ att_ Control source code analysis [supplement]
Variables and constants
OpenGL configuration vs2019
Revit secondary development - collision detection
php 记录完整对接腾讯云直播以及im直播群聊 所遇到的坑
Matplotlib drawing interface settings