PyQt5 如何让界面和逻辑分离的方法
前言
我们已经知道利用QtDesigner来设计界面,并通过Pycharm外部工具PyUIC将其转化成py源文件。不过由于要响应事件操作,往往会将相应的槽函数写在ui的py文件中,这样,界面和逻辑开发就混合在一起了,每一次的ui更新都会伴随着转换后py文件的槽函数的添加修改,及其不方便,造成效率低下。本例就来介绍如何将二者剥离。
实例讲解
设计ui
我们通过Pycharm新建一个项目,并打开QtDesigner做一个简答的界面mainwindow.ui,在其上添加两个Button对应ID为World和China,一个label对应ID为Title,一个LineEdit对应的ID为lineEdit
ui转换成py
在Pycharm中项目文件中选择mainwindow.ui右键选择外部工具–PyUIC,生成py源文件ui_mainwindow.py
剥离ui和逻辑
在项目中新建文件mainwindow.py,创建类MainWindow类
fromPyQt5importQtCore,QtGui,QtWidgets fromui_mainwindowimportUi_MainWindow classMainWindow(QtWidgets.QMainWindow,Ui_MainWindow): def__init__(self,parent=None): super(MainWindow,self).__init__(parent) self.setupUi(self) self.Title.setText("helloPython") self.World.clicked.connect(self.onWorldClicked) self.China.clicked.connect(self.onChinaClicked) self.lineEdit.textChanged.connect(self.onlineEditTextChanged) defonWorldClicked(self,remark): print(remark) self.Title.setText("HelloWorld") defonChinaClicked(self): self.Title.setText("HelloChina") defonlineEditTextChanged(self,p_str): self.Title.setText(p_str)
在这里去绑定相应的signal和slot,实现业务逻辑,这样代码结构也清晰多了,以后如果再遇到ui更新,我们只需将更新的ui文件替换并生成行的ui_***.py,这样就实现了ui和逻辑的分离。
main函数中调用
在项目中新建主函数main.py,在其上实例化类MainWindow,并调用show方法显示
fromPyQt5importQtCore,QtGui,QtWidgets frommainwindowimportMainWindow importsys if__name__=="__main__": app=QtWidgets.QApplication(sys.argv) mainWindow=MainWindow() mainWindow.show() sys.exit(app.exec_())
到此这篇关于PyQt5如何让界面和逻辑分离的方法的文章就介绍到这了,更多相关PyQt5界面和逻辑分离内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!