PyQt5+QtDesigner+fbs+python创建桌面程序

摘要:
最近,我发现用PyQt5和QtDesigner创建Python GUI程序非常方便,而且界面比TK好得多。例如,下图是一个用Qt编写的界面:下图是用QtDesigner设计的界面,可以适应窗口中的变化,创建方法非常简单。您可以通过拖动和创建布局来快速创建所需的界面:在QtDesigner中设计界面后,保存的格式为Ui文件,我们还需要将其转换为python文件。在QtDesigner中,为Arguments选择Filename,为Working directory选择Filedir。完成接口和相应功能后,我们可以使用fbs将python文件打包为exe文件。

最近发现用PyQt5和QtDesigner创建python的GUI程序非常的方便,界面也要比TK好看不少,比如下图是用Qt写的一个界面:

PyQt5+QtDesigner+fbs+python创建桌面程序第1张

下图是在QtDesigner中设计的界面,界面可以自适应窗口的变化,而且创建方法十分简单,只需要拖拉和创建layout就能快速的创建出需要的界面:

PyQt5+QtDesigner+fbs+python创建桌面程序第2张

在QtDesigner中设计好界面之后,保存的格式为.ui文件,我们还需要把它转化为python文件。找到pyuic5.exe的路径,在.ui文件所在文件夹中打开命令窗口,输入如下命令:

 (你的路径)pyuic5 -x 文件名.ui -o 文件名.py  

之后我们就得到了.py文件。

如果你使用PyCharm编辑器,可以把QtDesigner和pyuic5加入到外部工具,非常方便,添加方法如下:

打开PyCharm,打开File-Setting-Tools-External Tools,然后点击+号添加工具,下图是添加好的两个工具,只需要根据提示填写路径即可。

QtDesigner中的Arguments选择Filename,Working directory选择Filedir。

PyUIConv中的Arguments设置 -x $FileName$ -o $FileNameWithoutExtension$.py ,Working directory选择Filedir。

PyQt5+QtDesigner+fbs+python创建桌面程序第3张

配置完成后,我们就可以选中文件右键调用了,非常方便,如下图所示:

PyQt5+QtDesigner+fbs+python创建桌面程序第4张

在实现界面的功能时,我们新建一个python文件,把界面和功能分开来写,这样即使每次修改界面,也不会影响程序的运行。

在完成界面以及相应的功能后,我们可以用fbs来把python文件打包成为exe文件。

fbs的帮助文档地址:https://build-system.fman.io/manual/

现在fbs还不支持python3.7,所以如果要使用fbs来打包程序,请安装python3.5或3.6版本。

fbs的安装方法非常简单,使用conda prompt,在相应的虚拟环境下使用pip安装即可。

PyQt5+QtDesigner+fbs+python创建桌面程序第5张

fbs安装完成后,在命令行(最好在conda prompt中)输入fbs startproject,会在文件夹下创建一个src文件夹,里面包含相应的文件。

我们把自己的python文件放在srcmainpython文件夹中,并修改srcuildsettings中的base.json文件,把main.py改为自己的主文件名称,需要在主文件中添加一行导入

 from fbs_runtime.application_context import ApplicationContext 。

在命令行运行fbs run,查看是否正常启动。如果正常,运行fbs freeze,得到一个免安装版本的软件。当然也可以输出一个安装版,具体可查阅帮助文档:https://build-system.fman.io/manual/

最终生成一个target文件夹,下面放着打包后的exe文件,如果图标使用的是相对路径,记得把图标文件拷贝到exe文件的相对路径下,效果如下:

PyQt5+QtDesigner+fbs+python创建桌面程序第6张

免责声明:文章转载自《PyQt5+QtDesigner+fbs+python创建桌面程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux虚拟机桥接模式下ping不通自己配置的网关Rust 包管理器 Cargo 入门下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python mysql 封装

封装 观察前面的文件发现,除了sql语句及参数不同,其它语句都是一样的 创建MysqlHelper.py文件,定义类 #encoding=utf8 import MySQLdb class MysqlHelper(): def __init__(self,host,port,db,user,passwd,charset='utf8'):...

基于Python的Web应用开发实战——3 Web表单

第2章中介绍的 请求对象 包含客户端发出的所有请求信息。 其中, request.form 能获取 POST请求 中提交的表单数据。 尽管Flask的请求对象提供的信息足够用于处理Web表单,但有些任务很单调,而且要重复操作。 比如,生成表单的HTML代码和验证提交的表单数据。 Flask-WTF(https://flask-wtf.readthedocs...

python原生结束线程的方法

Python的threading 本身没有提供.kill()方法来结束线程。但是只需要一个小小的变通就可以实现。 一个caller线程在里面调用需要控制时间的tHhandle线程并把tHhandle线程设置.setDaemon()方法为True。caller线程结束,tHandle线程就会跟着结束。 ? # encoding: UTF-8 impor...

python 删除多个同一后缀名文件(基于python 3.X)

import osdef remove(): filearray = [] address_Excel="E:\totally\FinancePDF" f_list = os.listdir(address_Excel)for fileNAME in f_list:# os.path.splitext():分离文件名与扩展名 if os.path.s...

Python 持久化管理之 Pickle/ZODB

1.对象持久化 如果希望透明地存储 Python 对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化: 它是一个将任意复杂的对象转成对象的文本或二进制表示的过程。同样,必须能够将对象经过序列化后的形式恢复到原有的对象。 在 Python 中,这种序列化过程称为 pickle,可以将对象 pickle 成字符串、磁盘上的文件或者任何类似于文件的对象...

机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)

http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考《机器学习实战》这本书...