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自带很多不 ...
随机推荐
- idea2017.3最新破解方法
IntelliJ IDEA2017.3 激活 转载至:http://blog.csdn.net/zx110503/article/details/78734428 最新的IDEA激活方式 使用网上传 ...
- 积累的关于linux的安装卸载软件基本命令
Linux安装.卸载软件 在linux环境中,尤其是cenos中安装过一些软件,一般是二进制安装与源码安装,现小结一下linux中的安装与卸载. 一.通常Linux应用软件的安装包有三种: 1) ...
- red hat防火墙的开启与关闭及状态查看方法
Redhat使用了SELinux来增强安全, 首先怎么查看防火墙的状态呢? a.可以通过如下命令查看iptables防火墙状态: chkconfig --list iptables b. selinu ...
- JAVA学习笔记系列2-Java程序的运行机制
计算机高级语言的类型主要有编译型和解释型两种,而java语言是两种类型的结合. java首先利用文本编辑器编写java源程序,源文件后缀名为.java,再利用编译器(javac)将源程序编译成字节码文 ...
- python发送邮箱的小项目
import smtplibfrom email.mime.text import MIMEText receiver = input('输入接受者邮箱\n')subject = input('输入标 ...
- Java学习笔记43(Spring的jdbc模板)
在之前的学习中,我们执行sql语句,需要频繁的开流,关流比较麻烦,为了更加的简化代码,我们使用Spring 的jdbc模板jdbcTemplate来简化我们的代码量:需要导入的包有: 我们在之前的dr ...
- 获取Ueditor里面的图片列表,地址绝对化
/** * 内容中图片地址转成绝对地址 * @param $content * @return mixed */ private function imgUrl( ...
- Linux ssh命令详解
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ...
- 神州数码OSPF路由汇总配置
实验要求:掌握OSPF路由汇总配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip addres ...
- 学习笔记TF036:实现Bidirectional LSTM Classifier
双向循环神经网络(Bidirectional Recurrent Neural Networks,Bi-RNN),Schuster.Paliwal,1997年首次提出,和LSTM同年.Bi-RNN,增 ...