关于
最近要在python下做可视化界面的设计,想到之前用QtDesigner来画界面很是方便,当时画完之后都要手动在终端输入
pyuic5 -o 1.py 1.ui
来把.ui文件转换为.py的代码再进行编辑,不是很方便,联想到要是能在PyCharm下完成所有工作就好了,所以就有了这篇博客,简单记录下,不够详细的地方请谅解。
配置前提
PyCharm (这个不多说,官网下载安装)
Anaconda 1.8.7(强烈安利,很好的python包管理平台,官网下载安装)
python 3.6.5 (其实装anaconda的时候会自动安装)
配置过程
1、首先打开anaconda,environment—>not installed搜索pyqt,会看到pyqt的包,直接勾选后右下角apply就安装好了。安完后可以切换到installed查看是否真正安装成功。
2、安装完PyQt5之后,可以在anaconda—>Libra—>bin目录下看到designer.exe,这个就是用来画界面的QtDesigner,记住这个目录,一会儿会用到。
3、打开PyCharm,打开File—>Settings—>External Tools,点击加号来添加自己的工具,做如下配置:
Name:QtDesigner
Group:Qt
Programs:F:\anaconda\Library\bin\designer.exe(这里是各位自己的designer路径,之前所看到的)
Working directory:$ProjectFileDir$
完成后点“OK”,现在QtDesigner就配置好了,就可以直接在PyCharm中打开它来画界面了,但是要在PyCharm中把界面的.ui文件转换为.py文件还需要后面的配置。
4、同样在External Tools中点击加号来配置pyuic:
Name:Pyuic
Group:Qt
Program:F:\anaconda\python.exe(各位自己的python路径)
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$
5、至此就全部配置好了,接下来是test,回到PyCharm,Tools—>Qt—>QtDesigner,点击即可打开designer:
然后创建一个最简单的界面,把这个界面保存(默认是保存在当前pycharm项目目录下,我这里命名“first.ui”)。
6、回到pycharm,可以看到工程目录下已经产生了first.ui,右键它,Qt—>Pyuic,点击后即可产生first.py文件,OK接下来就可以愉快地写代码了
第二步:在文件末尾加上这一段代码:
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
ui = Ui_MainWindow()
ui.setupUi(widget)
widget.show()
sys.exit(app.exec_())
第三步 右键run就可以看到界面啦!
解释一下第二步的代码
if __name__ == "__main__"
用于判断是否直接运行了该.py文件。
modul(模块),也就是.py文件。所有的模块都有一个内置属性__name__。如果 import 一个模块,那么模块__name__的值通常为模块文件名,不带路径或者文件扩展名。但如果直接运行一个模块,那么__name__的值是__main__
widget = QtWidgets.QWidget()
因为Qt Designer默认继承的object类,不提供show()显示方法,所以我们生成一个QWidget对象来重载我们设计的Ui_MainWindow类,达到显示效果。
sys.exit(app.exec_())
app.exec_() ——运行app
sys.exit(app.exec_())——消息循环结束之后返回0,接着调用sys.exit(0)退出程序
2.在别的文件中调用这个模块
注意这个和前面所讲的右键run就能显示界面的方式并不冲突,只是要在别的文件中调用这个模块。如果那三行代码不注释掉的话依旧会无法显示界面。
需要调用这个模块的文件写法:
import sys
from first import Ui_MainWindow # 这里的first是.ui文件生成的.py文件名
from PyQt5 import QtWidgets
# 这个类继承界面UI类
class mywindow(QtWidgets.QWidget, Ui_MainWindow):
def __init__(self):
super(mywindow, self).__init__()
self.setupUi(self)
#调用show
if __name__=="__main__":
app=QtWidgets.QApplication(sys.argv)
myshow=mywindow()
myshow.show()
sys.exit(app.exec_())
在这个文件中右键-run 界面也可以出现