Python界面 PyQT可视化开发(python3+PyQt5+Qt Designer)

前言

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


 1.安装Qt Designer

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

  • 安装PyQt5:打开CMD或者PowerShell,在命令窗中输入
    pip install -i https://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple PyQt5

    执行结果如下:

  •  安装PyQt5-tools:打开CMD或者PowerShell,在命令窗中输入
    pip install -i https://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple PyQt5-tools

    执行结果如下:

 2.配置开发工具

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

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

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

这里需要配置两个

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

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

  • Name:QTDesigner
  • Program:D:\Anaconda3\Library\bin\designer.exe
                      注意:该路径为你Python安装路径下Lib\site-packages\pyqt5_tools文件夹里
  • Working dirctory:$FileDir$

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

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

  • Name:PyUIC
  • Program:D:\Anaconda3\Scripts\pyuic5.exe
                      注意:该路径为你Python安装路径下Scripts文件夹里
  • Arguments:$FileName$ -o $FileNameWithoutExtension$.py
  • Working dirctory:$FileDir$

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


 3.使用Qt Designer设计界面

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

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

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

  •  指定点击事件及其响应函数
    工具栏点击 这个图标  ,然后光标移动到“PushButton”按钮上,鼠标左键 点击 “PushButton”按钮 不要松开,拖动光标 到 按钮旁边的任一位置后 再松开鼠标左键

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

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

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

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

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

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

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

 5.编写逻辑代码

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

import sys
from PyQt5 import QtWidgets
from PyQT_Form import Ui_Formclass MyPyQT_Form(QtWidgets.QWidget,Ui_Form):def __init__(self):super(MyPyQT_Form,self).__init__()self.setupUi(self)#实现pushButton_click()函数,textEdit是我们放上去的文本框的iddef 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 ,运行效果如下:

任何程序错误,以及技术疑问或需要解答的,请添加

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM(三)对象的生死判定和算法详解

好的文章是能把各个知识点,通过逻辑关系串连起来,让人豁然开朗的同时又记忆深刻。 导读:对象除了生死之外,还有其他状态吗?对象真正的死亡,难道只经历一次简单的判定?如何在垂死的边缘“拯救”一…

【STM32】修改芯片型号后报 Error 的解决方案

原文:https://blog.csdn.net/xiuhua_wu/article/details/85237418 背景 前几天有个新需求,使用 STM32 的标准库(STD)做个产品的例程。之前已经做了个 HAL 的,但人家客户不干,非要 STD 的。拖了一周&#xf…

Python手写神经网络实现3层感知机

一、BP神经网络结构模型 BP算法的基本思想是,学习过程由信号的正向传播和误差的反向传播俩个过程组成,输入从输入层输入,经隐层处理以后,传向输出层。如果输出层的实际输出和期望输出不符合,就进入误差的反向传…

JVM(四)垃圾回收的实现算法和执行细节

全文共 1890 个字,读完大约需要 6 分钟。 上一篇我们讲了垃圾标记的一些实现细节和经典算法,而本文将系统的讲解一下垃圾回收的经典算法,和Hotspot虚拟机执行垃圾回收的一些实现细节,比如安全点和安全区域等。 因为各个平台的虚拟…

python-cx_oracle报错“DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: “

问题的主要原因是python-cx_oracle加载的是32位的instantclient-basic,我们需要让他读到64位的。 弄清版本,最重要!!! 首先安装配置时,必须把握一个点,就是版本一致!包括&#xff1…

JVM(五)垃圾回收器的前世今生

全文共 2195 个字,读完大约需要 8 分钟。 如果垃圾回收的算法属于内存回收的方法论的话,那本文讨论的垃圾回收器就属于内存回收的具体实现。 因为不同的厂商(IBM、Oracle),实现的垃圾回收器各不相同,而本文…

【SlowFast复现】SlowFast Networks for Video Recognition复现代码 使用自己的视频进行demo检测

目录 一,准备 1.1代码1.2 环境准备1.3 搭建镜像1.4 配置slowfast环境1.5 ava.json1.6 SLOWFAST_32x2_R101_50_50.yaml1.7 SLOWFAST_32x2_R101_50_50 .pkl二,代码运行三 错误解决复现过程视频:B站复现视频复现结果 一,准备 1.1代…

MySQL学生向笔记以及使用过程问题记录(内含8.0.34安装教程

MySQL 只会写代码 基本码农 要学好数据库,操作系统,数据结构与算法 不错的程序员 离散数学、数字电路、体系结构、编译原理。实战经验, 高级程序员 去IOE:去掉IBM的小型机、Oracle数据库、EMC存储设备,代之以自己在开源…

程序员专属精品简历合集—面试必备

听说你最近打算换工作?听说你和好工作之间,只差一个漂亮的简历模板?人们常说“金三银四”,一年之际在于春。不管你是主动离职,还是被动“被离职”(稳住,我们能赢!)&#…

ubuntu20.10下wine安装微信

1.unbuntu20.04下安装wine sudo apt-get install wine2.微信官网http://short.weixin.qq.com/下载window系统微信软件 3.在wine中安装微信 在WeChatSetup.exe文件中打开终端输入: wine WeChatSetup.exe

【faster rcnn 实现via的自动框人】使用detectron2中faster rcnn 算法生成人的坐标,将坐标导入via(VGG Image Annotator)中,实现自动框选出人的区域

前言 B站讲解视频 我的研究生毕业论文方向就是时空行为检测,所以,slowfast和ava是我重点搞的,我的博客主页也有很多这些相关内容。 终于,到了标注数据这一块了,为了更简单的标注数据,我要做的这部分的数据…

程序员精美简历Top榜—面试必备

听说你最近打算换工作?听说你和好工作之间,只差一个漂亮的简历模板? 不管是主动离职,还是“被离职”(稳住,我们能赢!),趁着大好时光和对新年的憧憬,再找一个…

失败创业者的告白:初创团队应有一位绝对领导者

做了两年的项目失败了,我们的项目做的是数码3C的优惠信息,我是一个80后,小硕一枚;我们的1号创始人是90后,有激情、有梦想;在十八岁那年带上他的梦想千里北上,找我们的开复老师指点一二;但那时,开复老师正为…

【ffmpeg裁剪视频faster rcnn自动检测 via】全自动实现ffmpeg将视频切割为图片帧,再使用faster rcnn将图片中的人检测出来,最后将检测结果转化为via可识别的csv格式

目录 前言一,ffmpeg 自动裁剪 1.1 目录结构1.2 cutVideoToImage.sh1.2 myVideo1.3 myVideo15mins1.5 myFrames1.6 运行1.7 查看结果二,detectron2中的faster rcnn检测 2.1 img2.2 myvia.py2.3 运行2.4 结果展示三,via标注 3.1 csv文件修改&am…

ubuntu20.10(Linux)在wine下用pyinstaller打包python程序在window系统运行 交叉编译

1.安装wine 在终端中输入: sudo apt-get install wine2.安装pip 在https://pypi.org/project/pip/#files下载pip-21.0.tar.gz,在压缩包上右键提取到此处,打开解压的文件夹pip-21.0 在该文件夹中打开终端安装pip-21.0.tar.gz: wi…

JVM(六)为什么新生代有两个Survivor分区?

本文会使用排除法的手段,来讲解新生代的区域划分,从而让读者能够更清晰的理解分代回收器的原理,在开始之前我们先来整体认识一下分代收集器。 分代收集器会把内存空间分为:老生代和新生代两个区域,而新生代又会分为&a…

【slowfast复现 训练】训练过程 制作ava数据集 复现 SlowFast Networks for Video Recognition 训练 train

目录 前言一,ava相关文件准备 1.1 空间准备(500G)1.2 整体ava文件结构1.3 frames文件1.4 frame_lists 文件1.5 annotations 文件二,预训练模型三,配置文件 3.1 创建新的yaml文件3.2 yaml文件解释四,训练前言…

Qt6 在线安装图文步骤

说明: Qt 自从5.15版本开始,对非商业版本,也就是开源版本,不提供已经制作好的离线exe安装包,自这个版本开始你只有两种选择: 1、编译源码 例如qt-everywhere-src-5.15.2.zip 编译步骤繁琐,需严…

【slowfast 减少ava数据集】将ava数据集缩小到2个,对数据集做训练,然后进行检测,为训练自己的数据集做准备

目录 前言一,数据文件结构 1.1 myava1.2 annotations1.3 annotations文件处理1.4 frame_lists1.5 frames二,预训练模型四,配置文件 4.1 创建新的yaml文件4.2 yaml文件解释五,训练六,结果查看前言 b站讲解 ava的数据集…

JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。

2019独角兽企业重金招聘Python工程师标准>>> 首先必须明一点 Field类主要是用来辅助获取和操作类的属性的! 1.怎么通过反射获取类的属性 先来看JDK提供的方法有如下几种: a)Class.getDeclaredField(String name); 返回一个 Field 对象&#x…