python3+PyQt5+Qt Designer实现界面可视化


Posted in Python onJune 10, 2021

前言

       以前制作一个Python窗体界面,我都是用GUI窗口视窗设计的模块Tkinter一点一点敲出来的,今天朋友问我有没有Python窗体的设计工具,“用鼠标拖拖”就能完成窗体设计,我查了查相关资料,果然有一款好用的工具——Qt Designer

 1.安装Qt Designer

        这里需要安装两个东西:PyQt5PyQt5-tools

安装PyQt5:打开CMD或者PowerShell,在命令窗中输入

pip install PyQt5

执行结果如下:

python3+PyQt5+Qt Designer实现界面可视化

 安装PyQt5-tools:打开CMD或者PowerShell,在命令窗中输入

pip install PyQt5-tools

执行结果如下:

python3+PyQt5+Qt Designer实现界面可视化

 2.配置开发工具

        安装完Qt Designer后,我们利用PyCharm进行界面开发,下面进行Qt开发工具的配置。

在PyCharm中依次打开:File→Settings 弹出Settings对话框,如下图

python3+PyQt5+Qt Designer实现界面可视化

 然后按下图的4个步骤,打开Create Tools对话窗:

python3+PyQt5+Qt Designer实现界面可视化

这里需要配置两个

(1)配置QTDesigner,用来打开QT可视化开发工具

 如下图,分别在NameProgramWorking dirctory填入如下信息:

Name:QTDesigner

Program:D:\ProgramSoftware\Anaconda3\Lib\site-packages\pyqt5_tools\Qt\bin\designer.exe
                  注意:该路径为你Python安装路径下Lib\site-packages\pyqt5_tools文件夹里

Working dirctory:$FileDir$

python3+PyQt5+Qt Designer实现界面可视化

(2)配置PyUIC,用来将Qt Designer开发工具生成的.ui文件转换为.py文件

 如下图,分别在Name、Program、Arguments、Working dirctory填入如下信息:

Name:PyUIC

Program:D:\ProgramSoftware\Anaconda3\Scripts\pyuic5.exe
                  注意:该路径为你Python安装路径下Scripts文件夹里

Arguments:$FileName$ -o $FileNameWithoutExtension$.py

Working dirctory:$FileDir$

python3+PyQt5+Qt Designer实现界面可视化

至此,安装和配置过程全部结束,下面介绍简单的使用教程。

 3.使用Qt Designer设计界面  

在PyCharm中创建一个项目,然后点击“Tools”--“External Tools”--“QTDesinger”打开QT Desinger,如下图:

python3+PyQt5+Qt Designer实现界面可视化

 在New Form对话框里选择Widget模板,然后点击创建:

python3+PyQt5+Qt Designer实现界面可视化

 然后就会出现Qt Designer主界面,向Form中分别拖入一个“Push Button”和一个“Text Edit”,如下图:

python3+PyQt5+Qt Designer实现界面可视化

 指定点击事件及其响应函数

工具栏点击 这个图标 python3+PyQt5+Qt Designer实现界面可视化 ,然后光标移动到“PushButton”按钮上,鼠标左键 点击 “PushButton”按钮 不要松开,拖动光标 到 按钮旁边的任一位置后 再松开鼠标左键

python3+PyQt5+Qt Designer实现界面可视化

随后就出现了如下界面,在对话框左侧选中clicked()”,右侧点击“Edit

python3+PyQt5+Qt Designer实现界面可视化

 然后点击绿色“+”按钮,指定click事件的响应函数,名称随意,比如我这里命名为“pushButton_click()”
(我们这里只是指定事件与响应函数的关联关系,函数是还没实现的,后边我们自行实现)

python3+PyQt5+Qt Designer实现界面可视化

python3+PyQt5+Qt Designer实现界面可视化

最后,将设计的界面保存。

4.使用PyUIC将文件转成python代码

       关闭QT Designer回到PyCharm,查看项目,可以看到只有刚才保存的PyQT_Form.ui文件而且该文件在PyCharm是打不开的,我们需要将这个文件转成.py代码才能使用。

python3+PyQt5+Qt Designer实现界面可视化

选中“PyQT_Form”,在其上点击鼠标右键,到“External Tools”中点击“PyUIC

python3+PyQt5+Qt Designer实现界面可视化

之后再看项目文件,就可以看到多了一个“PyQT_Form.py”,双击查看其内容如下:

python3+PyQt5+Qt Designer实现界面可视化

 5.编写逻辑代码

       界面与业务逻辑分离实现:这一步主要实现业务逻辑,也就是点击登录和退出按钮后程序要执行的操作。为了后续维护方便,采用界面与业务逻辑相分离来实现。也就是通过创建主程序调用界面文件方式实现。这有2个好处:1.就是实现逻辑清晰2.后续如果界面或者逻辑需要变更,好维护新建一个.py文件程序,在里边创建一个子类(MyPyQT_Form)继承PyQT_Form.py中的Ui_Form。具体代码如下

import sys
from PyQt5 import QtWidgets
from PyQT_Form import Ui_Form
 
class MyPyQT_Form(QtWidgets.QWidget,Ui_Form):
    def __init__(self):
        super(MyPyQT_Form,self).__init__()
        self.setupUi(self)
 
    #实现pushButton_click()函数,textEdit是我们放上去的文本框的id
    def pushButton_click(self):
        self.textEdit.setText("你点击了按钮")
 
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    my_pyqt_form = MyPyQT_Form()
    my_pyqt_form.show()
    sys.exit(app.exec_())

6.运行

      至此,我们终于完成了第一个Python界面的设计,好累 ( ̄o ̄) . z Z ,运行效果如下:

python3+PyQt5+Qt Designer实现界面可视化

python3+PyQt5+Qt Designer实现界面可视化

参考资料:

https://www.cnblogs.com/lsdb/p/9121903.html
https://www.cnblogs.com/lsdb/p/9122425.html
https://www.3water.com/article/167015.htm

到此这篇关于python3+PyQt5+Qt Designer实现界面可视化的文章就介绍到这了,更多相关python3 界面可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python入门篇之条件、循环
Oct 17 Python
python实现八大排序算法(1)
Sep 14 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
python实现剪切功能
Jan 23 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
Python Django框架模板渲染功能示例
Nov 08 Python
解决python 找不到module的问题
Feb 12 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
Django使用echarts进行可视化展示的实践
教你如何使用Python Tkinter库制作记事本
Jun 10 #Python
Python中常见的反爬机制及其破解方法总结
Jun 10 #Python
Pytorch可视化的几种实现方法
OpenCV-Python实现怀旧滤镜与连环画滤镜
OpenCV-Python实现轮廓的特征值
Jun 09 #Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 #Python
You might like
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
javascript cookies操作集合
2010/04/12 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python动态参数用法实例分析
2015/05/25 Python
Python list操作用法总结
2015/11/10 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
Python将字典转换为XML的方法
2020/08/01 Python
python 录制系统声音的示例
2020/12/21 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
幼儿教师小班个人总结
2015/02/05 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL