PyQt5+pycharm开发环境搭建的实现步骤(图文)
作者:StephenBarrnet 发布时间:2021-05-19 17:27:40
什么是pyQt5
首先我们来说说什么是pyQt5。
搞过GUI界面设计的童鞋一定都了解过微软的MFC。当然了,个人感觉MFC不是一个非常优雅的UI分开发工具,不过设计起来也是真的比较方便,主要原因就是做起界面来就是画图。
现在为了写算法方便转战了python,又没有学到混合编程的地步,那么在python环境下有没有这样的开发工具呢?
pyQt就是这样的一个工具
要说pyQt,就必须从QT说起。QT是一个用C/C++编写的,跨平台的GUI库,支持目前主流的操作系统Windows,MacOS X和Linux。QT是由挪威的一家公司Trolltech开发的,此公司2008年6月被大名鼎鼎的Nokia收购,2012年8月芬兰公司Digia从Nokia收购了QT的所有业务。
而python作为注明的胶水语言,这么一个强大好用的GUI库怎么能不收入囊中呢?于是pyQt就诞生了。它可以吧用QTDesigner制作的GUI界面转换成python语言接口,使用python来调用,于是我们可以通过高效的python,而不是C++,去开发我们的GUI界面了。
于是,pyQt容纳了C++底层开发的告诉,以及python接口调用的高效。
一句话概括一次啊,pyQt是使用python去调用绘制好的GUI界面的库
而对于pyQt5,就是pyQt的第5个版本啦。注意了,它是不向下兼容的,不过吧pyQt4的代码改成pyQt5可用的程序也并不难,主要是几个新增的功能修改写法罢了。
安装pyqt5环境:
pip install PyQt5
pip install PyQt5-tools
一、 pycharm环境准备
1. 在Pycharm中点击 “file”—>“Settings” 选项
2. 在弹出的界面上点击 “Tools” —> “External Tools”
3. 点击 “+” 弹出Create Tool界面,按照如下方式设置 QtDesigner :
Name:QtDesigner
Program:designer.exe所在的路径
Working directory:$ProjectFileDir$
4. 点击 “+” 弹出Create Tool界面,按照如下方式设置 PyUIC:
Name:PyUIC
Program:填入python.exe的路径
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$
5. 点击 “+” 弹出Create Tool界面,按照如下方式设置 PyRCC:
Name:PyRCC
Program:填入python.exe的路径
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory:$FileDir$
二、 编写界面并运行
1. 启动qt designer,设计界面
上述设置完之后在菜单栏中的 “Tools” 中会出现 External Tools 选项,点击 Qtdesigner 弹出设计界面。
选择其中一个选项,点击 “创建”,这里创建了三个 按钮 和 三个 下拉框用来测试。创建完后,点击 保存。
2. 编译ui文件
选择新生成的 test.ui 文件, 右击选择 “External Tools” 中的 “PyUIC”,生成相应的 test.py 文件。
3. 运行界面
新创建一个 py 文件,将下面的代码复制到在这个文件中,点击运行,即可弹出设计的界面。
import sys
import test
from PyQt5.QtWidgets import QApplication, QDialog
if __name__ == '__main__':
myapp = QApplication(sys.argv)
myDlg = QDialog()
myUI = test.Ui_Form()
myUI.setupUi(myDlg)
myDlg.show()
sys.exit(myapp.exec_())
三、 给生成的按钮实现弹窗功能
比如说我们要给其中一个按钮实现一个 点击弹窗的功能, 具体做法是,先自定义一个新的类myWindow,该类继承自QtWidgets.Qwidget类方法和Ui_Dialog界面类,在 __ init __ 函数里面定义初始化的信息。
import sys
from test import Ui_Form
from PyQt5.QtWidgets import QApplication, QDialog, QWidget
from PyQt5 import QtCore
# 子窗口类
class Child(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("我是子窗口啊")
# 该类继承QtWidgets.Qwidget类方法和Ui_Dialog界面类
class myWindow(QWidget, Ui_Form):
_signal = QtCore.pyqtSignal(str)
def __init__(self):
super(myWindow, self).__init__()
self.setupUi(self)
# 连接到定义的槽函数
self.pushButton.clicked.connect(self.popUpBox)
# 定义一个槽函数用来弹出子窗口
def popUpBox(self):
self.child_window = Child()
self.child_window.show()
if __name__ == '__main__':
myapp = QApplication(sys.argv)
myDlg = myWindow()
# myUI = myDlg.Ui_Form()
# myUI.setupUi(myDlg)
myDlg.show()
sys.exit(myapp.exec_())
效果如下,点击测试按钮1,弹出窗口界面。
来源:https://blog.csdn.net/luanfenlian0992/article/details/121507350


猜你喜欢
- python 创建List二维列表lists = [[] for i in range(3)] # 创建的是多行三列的二维列表for i i
- 程序员周末都喜欢做什么?在公司加班?在家里加班?看电影?睡觉?程序员都怎么找女朋友?百分之八十的程序员表示,女朋友是啥,有好 * 就够了。程序
- 为满足用户的视觉追求及产品的背景图片的换肤功能,设计师难免在设计上会用到半透明的效果。因此页面重构师基于视觉及产品的需要,采用了PNG32的
- NumPy数组是一个多维数组对象,称为ndarray创建一个numpy数组,如下所示import numpy as npx=np.array
- 前言Python包含6种内置的序列:列表、元组、字符串 、Unicode字符串、buffer对象、xrange对象。在序列中的每个元素都有自
- 实现了我的小跳槽以后,从8月7号入职了现在的这家公司,我好像是加入了救火队的行列,还没有开始开发新的模块,只是一直在实现已经上线模块中的新需
- 楔子在 TensorFlow 中,可以给一个 tensor 增加一个维度、删除一个维度,那么在 Numpy 中该怎么呢?删除维度、增加维度先
- 以下为在asp中增加一个sql server2000用户函数,并为建立一个数据库,给他dbo的权限。注意:sql server的验证方式不要
- Python变量与注释高级用法1.概述好的变量和注释并非为计算机而写,而是为每个阅读代码的人而写。变量与注释是表达作者思想的基础,他们对代码
- ECMAScript5为数组定义了5个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象(即影响th
- 先来看一个老掉牙的故事:福特说,我在设计汽车之前,到处去问人们“需要一个什么样的更好的交通工具?”,几乎所有人的答案都是 ── 一匹“更快的
- 于断电或非正常关机而导致MySQL(和PHP搭配之最佳组合)数据库出现错误是非常常见的问题。有两种方法,一种方法使用MySQL(和PHP搭配
- 前言 日益增长的分布式应用需求要求实现更好分布式的软件环境,不断推动着分布式技术的进步。Oracle数据复制是实现分布式数据环境的一种技术,
- 1.正则匹配数字,\为转义字符,d+为匹配一次或多次如下所示:返回的结果为列表2.正则匹配小数如下所示,返回的结果125.6为字符串总结&n
- 获取输入的五个点画五边形def pentagonUpdate(): p = {} win = GraphWin(&q
- threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。python当前版本的多线程库没有实现优先级、线程组,线程也不能被
- 前言daemon 音标 : [‘di:mən] , 中文含义为守护神或精灵的意思 . 其实它还有个意思 : 守护进程 .Daemon程序是一
- RSS 是一种基于 XML的文件标准,通过符合 RSS 规范的 XML文件可以简单实现网站之间的内容共享。Ajax 是Asynchronou
- 上一篇文章写到原生js取代jquery的一些常用函数:原生js仿jquery一些常用方法,那么,ajax如何实现呢?如下是一个比较完整的aj
- python中return的用法1、return语句就是把执行结果返回到调用的地方,并把程序的控制权一起返回程序运行到所遇到的第一个retu