PyQt5 GUI应用程序工具包入门(1)
众所周知,PyQt5是一款优秀的GUI工具集,可用于python界面的快速开发。 本文采用Python3.6+PyCharm社区版进行PyQt5的开发。对于python环境和PyCharm的安装本文不再赘述。本文讲述怎样对PyCharm进行优化,使我们的PyQt开发更为方便。
添加外部的工具
PyQt的开发需要三个外部工具,分别为:
- QtDesigner:可视化界面编辑器,生成.ui文件。
- PyUIC:将QtDesigner生成的UI文件转换为py文件。
- PyRcc:将资源文件转换为py文件。
图1 ExternalTool设置界面
单击菜单栏的“File”→“settings…”调出settings对话框
选择“Tools”→“External Tools”即显示如图1所示的工具界面,单击“+”即可增加扩展工具,弹出如图2所示的工具编辑界面。
图2 工具添加/设置界面
界面上表单的含义如下:
- Name:工具名称,这里为QtDesigner工具;
- Group:工具分组,由于我们设置的均为Qt工具,故均为:QT Tool;
- Program:调用的外部程序,我们调用的为designer文件;
- Parameters:程序参数;
- Working Directory:工作目录。
其中以“$…$”包含的为宏命令,可单击“Insert Macro…”查看和添加,常用的宏值如下:
- $FileName$:当前文件名,
- $FileDir$:当前程序文件夹,
- $PyinterpreterDirectory$:python目录。
三个工具的设置如下:
QtDesigner工具
名称:QtDesigner 程序:$PyInterpreterDirectory$Librarybindesigner.exe 参数:无 工作目录:$FileDir$。
PyUIC工具
名称:QtDesigner 程序:$PyInterpreterDirectory$python.exe 参数:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 工作目录:$FileDir$。
pyRCC工具
名称:QtDesigner 程序:$PyInterpreterDirectory$Librarybinpyrcc5.exe 参数:$FileName$ -o $FileNameWithoutAllExtensions$_rc.py 工作目录:$FileDir$。
至此,Qt常用的外部工具已添加完毕。以后可从菜单栏“Tool”中调用它们,或者在项目管理界面的文件名上单击鼠标右键也可找到调用命令。
定义模板
PyCharm模板的模板分为文件模板和活动模板,前者是一个文件的模板,后者是一条或多条语句的模板。灵活运用模板可以使开发效率成倍提高。
文件模板
文件模板在“settings…”对话框的“Editor”→“File and Code Templates”中设置和查看。如图3所示。
图3 文件模板
单击“+”号可创建模板,然后在Name文本框中输入名字,在Extension文本框中输入扩展名(如:py),在下面的大文本框中输入文件模板内容即可。 笔者为PyQt5开发建立了3个文件模板,2个py文件模板(窗口文件模板和主程序文件模板)和1个qrc文件模板(资源文件)。设置如下:
窗口文件模板
名称:QtWidget File 扩展名:py 内容:
# -*- coding: utf-8 -*-from PyQt5.QtWidgets import *class Ui_Form(QWidget): def __init__(self): super().__init__()
主程序文件模板
名称:PyQt5Main 扩展名:py 内容:
# -*- coding: utf-8 -*-from PyQt5 import QtWidgetsfrom Dlg import Ui_Formimport sysif __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) myshow = Ui_Form() myshow.show() sys.exit(app.exec_())
资源文件模板
名称:resource File 扩展名:qrc 内容:
<rcc vesion="1.0"> <qresource> </qresource></rcc>
定义好文件模板后可以通过新建文件,方便得建立文件。
活动模板
活动模板在“settings…”对话框的“Editor”→“Live Templates”中设置和查看。如图4所示。
图4 活动模板
可以看到PyCharm中已经定义好了许多活动模板,如:main、iter、itere,所表示的代码如图4所示,我们可以输入模板名,然后按“Tab”键即可自动补全语句。 笔者为方便PyQt5的开发,定义了Widgets表示:from PyQt5.QtWidgets import *,以方便模块导入。读者可自行定义其他模板,以方便开发。
本文作者
小溪
土木工程硕士毕业,硕士期间利用Python进行数据处理和ABAQUS二次开发,现就职于上海某土木工程咨询公司,从事土木工程软件开发工作。
- 分布式系统CAP理论
- 美媒盘点2018年将改变世界的四大技术趋势
- 如果你想深刻理解ASP.NET Core请求处理管道,可以试着写一个自定义的Server
- 路面能发电,智慧交通不遥远
- 小程序:企鹅帝国身后,微信帝国正悄悄露出冰山一角!
- ASP.NET MVC路由扩展:路由映射
- 如何改善遗留的代码库
- ASP.NET的路由系统:根据路由规则生成URL
- ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)
- 工业X.0将至 企业数字化转型该怎么做?
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(2)
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(3)
- 为什么说2018年互联网创业机会将变少
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- monosys as 1ddlang语言选型+1ddcodebase实践选型绿色monodevelope集成常见多语言
- hostguest nativelangsys及uniform cui cross compile system
- 写好 JS 条件语句的 5 条守则
- Python元组中元素怎么删除和修改?
- Jupyter 插件太好用了
- 华为提出十大数学挑战!解出一个就是年薪百万!
- 一道 Google 的面试题
- 生产实践 | 基于 Flink 的短视频生产消费监控
- 图数据库调研
- Swift 类构造器的使用
- 「网络IO套路」当时就靠它追到女友
- 起个简单枯燥的标题:找出连续差相同的数字
- 10分钟带你搞懂代理模式、静态代理、JDK+CGLIB动态代理
- 握草!某程序员竟然在深夜偷偷在代码里下毒!
- 自然资源部贡献的Landuse数据(2000、2010、2020)