PyQt5系列教程(六)如何让界面和逻辑分离
软硬件环境
- OS X EI Capitan
- Python 3.5.1
- PyQt 5.5.1
- PyCharm 5.0.3
前言
前面的内容我们介绍了利用QtDesigner来设计界面,再通过命令行工具pyuic5将ui文件转换成py源文件。不过由于要响应事件操作,网网会将相应的槽函数写在ui的py文件里,这样,界面和逻辑开发就混合在一起了,每一次的ui更新都会伴随着转换后py文件的修改,想想就知道烦人了。对于多人协作的项目,这样的效率肯定是低下的。本文就来介绍如何将这二者剥离。
实例讲解
设计ui
首先用QtDesigner做一个简单的界面mainwindow.ui, 在菜单栏上加入几个子菜单

ui转换成py
利用pyuic5进行转换
pyuic5 -o ui_mainwindow.py mainwindow.ui
剥离ui和逻辑
新建一个mainwindow.py文件,创建MainWindow类
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.action_exit.triggered.connect(self.onExitTriggered)
self.action_copy.triggered.connect(self.onCopyTriggered)
self.action_paste.triggered.connect(self.onPasteTriggered)
self.action_cut.triggered.connect(self.onCutTriggered)
在这里去绑定相应的signal和slot,实现业务逻辑,代码结构也清晰多了。这样,以后如果再遇到ui更新了,我只需要将更新后的ui文件替换,在转换成py就可以了,实现了ui和逻辑的分离。
main函数中调用
在main中实例化MainWindow,调用show方法显示
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
PyQt5系列教程(六)如何让界面和逻辑分离的更多相关文章
- PyQt5系列教程
PyQt5系列教程(一)Mac OS X下搭建Python3.5.1+PyQt5开发环境PyQt5系列教程(二)利用QtDesigner设计UI界面PyQt5系列教程(三)用py2exe进行程序打包P ...
- PyQt5系列教程(二)利用QtDesigner设计UI界面
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.1 前言 在PyQt5系列教程的第一篇http://blog.csdn.net/dj ...
- CRL快速开发框架系列教程六(分布式缓存解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- [转]Android Studio系列教程六--Gradle多渠道打包
转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...
- Android Studio系列教程六--Gradle多渠道打包
Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block 开发人员经常编写需要安全功能的应用程序.这些应用程序 ...
- webpack4 系列教程(六): 处理SCSS
这节课讲解webpack4中处理scss.只需要在处理css的配置上增加编译scss的 LOADER 即可.了解更多处理css的内容 >>> >>> 本节课源码 & ...
- 【转】PyQt5系列教程(七)控件
PyQt5系列教程(七)控件 软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...
随机推荐
- [Linux]Redhat7配置本地镜像源
一.Redhat7源 上一个文章介绍了如何配置的Redhat7的YUM网络源:[Linux]Redhat7配置CentOS7 YUM源 .如果在无法联网的情况下,可以使用镜像文件作为源安装需要的包. ...
- C语言的通用指针类型(void *)
reference: https://blog.csdn.net/cumirror/article/details/4631701 https://blog.csdn.net/Lee_Shuai/ar ...
- 一、JAVA变量类型:②局部变量
局部变量声明在方法.构造方法或者语句块中: public class Test{ public void pupAge(){ int age = 0; //定义age为方法pupAge中的局部变量,并 ...
- Spring Boot重要内容
首先POM配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- Map、Set、List集合差别及联系详解
提到集合之前,先说说数组Array和集合的区别: (1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) (2)JAVA集合可以存储和操作数目不固定的一组数据. ( ...
- 剑指Offer 33. 丑数 (其他)
题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 题目地 ...
- 自动化测试-6.selenium的css定位
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...
- 2018年3月底的PTA(二)
C高级第二次PTA作业(1) 题目6-7 删除字符串中数字字符 1.设计思路 为了偷懒,本题算法和流程图是精简代码后的,具体请看本题实验代码的第二段代码. (1)算法(子函数) 第一步:定义子函数类型 ...
- C语言笔记1
第一部分 计算机常识 1,人与计算机交流 2,人机交互方式 3,计算机的组成结构 4,计算机的系统组成 5,进制 6,程序和指令 第二部C开发环境 1 人与计算机交流 现实中人与人交流靠语言,那么人 ...
- latex之注释快捷键
注释快捷键 ctrl+T:注释掉选中区域 ctrl_U:解除选中区域的注释