GUI学习之〇——PyQt5安装
GUI(Graphical User Interface)是程序和软件使用者的接口,好的GUI是一个良好的软件的前提,在这里演示一下用PyQt5做一个GUI的方法
软件需求:python3.6 用的是Anaconda3.6(自带PyQt5,pip)
pycharm
PyQt5
QtTools
环境安装和配置
由于Anaconda自带了PyQt5,不用再安装,但要用pip下载QtTools。
pip install PyQt5-tools
如果装的不是Anaconda,可以在pycharm里查一下有没有装pyqt的模块,没有的话直接pip下载安装
pip install PyQt5
但是在安装的时候发现速度格外慢,网上查了下可以这样安装,用了豆瓣的镜像
pip install PyQt5-tools -i https://pypi.douban.com/simple
pip install PyQt5 -i https://pypi.douban.com/simple
PyQt5-tools安装好了以后,要在pycharm的setting里的外部工具里做配置环境(按图中的加号添加)
第一步添加QtDesigner,找到刚才装好的PyQt5-tools的路径(在python路径下的pyqt5_tools文件夹下有个designer.exe。我的win10是C:\Users\user\Anaconda3\Lib\site-packages\pyqt5_tools,反正在设python的环境变量时应该已经找过了)
Tool settings里的Program选择刚才说的路径下的designer.exe,工作路径就直接粘贴$FileDir$
第二步添加PyUIC
Program就是python.exe的路径,Parameters直接粘贴下面的代码,工作路径依旧是$FileDir$
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
好了以后可以用下面的代码试一试,看看PyQt是否安装、配置完成
import sys
from PyQt5 import QtWidgets,QtCore
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(860,480)
widget.setWindowTitle("hello,pyqt5")
widget.show()
sys.exit(app.exec_())
GUI_Test
如果配置正确的话,运行后会弹出一个对话框.
下面我们来结合python的代码来做一个程序,用9个按钮,像计算器一样,按一个按钮可以有对应的显示值
首先,在charm里打开QtDesigner,
选择新建一个Main Window。将左边的Text Edit拖到中间的界面中,然后在右边更改控间的名称(我用的是data_display)
再加入九个按钮,把控件名称改好,我用的是num_1到num_9,一共9个按钮
把做好的界面保存好(路径随便,文件格式是.ui),下面就该写python的代码了!
import sys
from PyQt5 import QtCore, QtGui, uic,QtWidgets
from functools import partial
qtCreatorFile = "calc.ui" #这里要加ui文件的路径
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) class MyApp(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self):
super(MyApp,self).__init__() #继承父类
self.data = ''
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
# self.num_1.clicked.connect(self.set_num)
# self.num_2.clicked.connect(self.show_num('2'))
self.num_1.clicked.connect(partial(self.set_num,'')) #信号——槽机制,用partial给槽传递参数
self.num_2.clicked.connect(partial(self.set_num,''))
self.num_3.clicked.connect(partial(self.set_num,''))
self.num_4.clicked.connect(partial(self.set_num,''))
self.num_5.clicked.connect(partial(self.set_num,''))
self.num_6.clicked.connect(partial(self.set_num,''))
self.num_7.clicked.connect(partial(self.set_num,''))
self.num_8.clicked.connect(partial(self.set_num,''))
self.num_9.clicked.connect(partial(self.set_num,'')) def set_num(self,x):
self.data += x
self.data_display.setText(self.data) if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
运行一下,OK
这段代码有这几个地方要注意一下:
1.我们用了partial来实现给槽传递参数的目的。
self.num_1.clicked.connect(partial(self.set_num,''))
由于Qt用的是信号——槽的机制,我们把set_num这个通过槽连到了按钮被点击的信号上。但是每个按钮对应一个函数太麻烦,这里做了个解耦,通过传递参数直接做一个函数就可以了,但是直接调用槽是不能传递参数的
self.num_1.clicked.connect(set_num)
他是这么用的,所以这里就用了个partial函数来把实参数传递给函数里的形参。
2.在定义ui路径的时候如果python文件和ui文件是在一个文件夹下,可以直接用文件名就可以,否则要用绝对路径!
qtCreatorFile = r"D:\python\GUI\calc.ui"
记得字符串前要加‘r’来防止转义啊!
最后还留个悬念:怎么可以把这个界面和上回做的计算器连到一起呢?还在想办法没有解决!——20190303
GUI学习之〇——PyQt5安装的更多相关文章
- QT学习之windows下安装配置PyQt5
windows下安装配置PyQt5 目录 为什么要学习QT 命令行安装PyQt5以及PyQt5-tools 配置QtDesigner.PyUIC及PyRcc 为什么要学习QT python下与界面开发 ...
- Python gui编程pyQt5安装步骤t
Python gui编程pyQt5安装步骤 pip install PyQt5 Pip3 install PyQt5 https://riverbankco ...
- Python gui编程pyQt5安装步骤
Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic $FileName$ -o $FileNameWit ...
- PyQt5学习一---环境的安装和配置
PyQt5环境安装 1.Python环境(我在练习的时候是用的Python3.6.8) 2.PyQt5安装 首先安装sip pip install sip 然后安装PyQt5-tools pip in ...
- pyqt5安装与pycharm配置
最近几天新入坑了python的GUI设计,回想一下我为什么会入门这个???好像是在知乎上看到你都用 Python 来做什么? 这篇文章,看到有人回答说将python打包成exe文件,然后就想把之前弄得 ...
- InfluxDB学习之InfluxDB的安装和简介
最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- 跟我学习dubbo-ZooKeeper注册中心安装(2)
注册中心 可选方案:zookeeper.Redis 1.建议使用dubbo-2.3.3以上版本的使用zookeeper注册中心客户端 2.Zookeeper是Apache Hadoop的子项目,强度相 ...
- OpenGL学习之windows下安装opengl的glut库
OpenGL学习之windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows环境下的GLUT下载地址:(大小约为15 ...
随机推荐
- ubuntu-docker入门到放弃(七)操作系统
操作系统相信很多人都会装,但是当使用docker容器来安装操作系统的时候,还是跟我们平时安装操作系统有很大区别的,我们之前也下载安装过centos系统,你会发现跟我们之前的操作系统相比,很精简,那么我 ...
- python开发计算器
1 业务需求 1.1 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16- ...
- Linux第八章:文件,文件系统的压缩,打包备份
压缩:gzip -v 文件名 1:压缩后成 文件名.gz 的压缩文件,原文件消失 2:压缩的文件可以直接使用zcat 文件名.gz 读取里面的内容 解压缩: gunzip 文件名.gz 替 ...
- 残差神经网络与inception-resnet
一.基本概念 Residual Connection: 本质是“短路连接” 如下图阴影部分,通过增加shortcuts,加速训练,从而可以训练出更深的模型(I.R.v2 > Inception ...
- Vue非父子组件之间的传值
1.新建一个js文件 然后引入vue 实例化vue 最后暴露这个实例:实例化Vue对象的时候名称要小写,大写控制台报错,我也不知道什么原因: 2.在要广播的地方引入刚才定义的实例: 3通过VueEm ...
- Python · 进度条
(这里是本章会用到的 GitHub 地址) 我实现的这个进度条可能是可以当做一个第三方库来使用的(这个人好自大,啧),它支持记录并发程序的进度且损耗基本只来源于 Python 本身 先来看看我们的进度 ...
- 游戏中转盘概率的算法---python实现
加入转盘的内容及概率如下 转盘倍数 0.5 0.6 0.7 0.8 1 1.2 1.5 1.8 2 机率 0.2 0.15 0.15 0.2 0.2 0.1 0.1 0.05 0.05 下面来实现转盘 ...
- __iter__ 和 __next__
class F: def __init__(self,x): self.x = x def __iter__(self): #把对象 变成可迭代对象 return self def __next__( ...
- idea导入项目
1. 2.导入项目 3.右键项目选择web 4.编辑添加tomcat 5.添加jar.包 6. 7.右键put into 8.安装tomcat 9.引入tomcat 10.把项目布署到tomcat
- 【FZSZ2017暑假提高组Day1】华容道游戏
[问题描述] 华容道是一种有趣的滑块游戏,大概是下面这个样子的. 游戏局面由一个2*2的曹操滑块,五个2*1的蜀将滑块(横竖是不定的).四个1*1的小兵滑块以及两个空的位置构成,玩家需要利用空的位子移 ...