VS2017+PyQt5环境配置python
VS2017里使用PyQt5
csdn里有几篇文章能够参考,各有不完整,或再也不适用最新版的VS2017 15.9.10。
这里特别整理记录一下。web
VS2017的安装
为了简单起见,建议安装时,将python相关的都勾选上,尤为是选择了python模块后,安装页面右边的一些非默认勾选组件,都选上。app
若是安装路径默认的话,那么安装完成后,python相关的在C:\Program Files (x86)\Microsoft Visual Studio\Shared
有anaconda3,也有Python36;
使用VS2017开发python时,能够选择使用本身喜欢的python环境,具体方法:
在加载的解决方案中,右键Python环境,添加/删除Python环境
anaconda也是一个比较好的python环境。
以使用Python环境为例,说明配置PyQt5过程
查看是否安装了opencv-python,pyqt5,pyqt5-tools
在命令行中,进入到此目录下 C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts,
输入pip list
PyQt5 整个Qt5的Python实现框架
PyQt5-tools PyQt5开发的一些工具,例如GUI设计的designer,将ui转为py文件的pyuic.exe
缺乏哪一个,就安装哪一个
在刚才的Scripts目录下(或者已经将该目录添加到了PATH,就能够在任意目录),pip3 install -i https://mirrors.zte.com.cn/pypi/simple pyqt5 --trusted-host mirrors.zte.com.cn opencv-python,pyqt5-tools相似安装
安装完后,确认是否存在pyuic5.exe
在C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts下应该有pyuic5.exe pyrcc5.exe pyqt5designer.exe
若是先安装pyqt5,本贴编写时下载的版本是5.12,但pyqt5-tools是5.11
是否有不兼容的地方,待后续使用观察
利用VS2017的外部工具配置pyqt5的调用以及qt ui转换为py文件
vs2017菜单栏的工具,弹出菜单中,选择外部工具:
新建一个名字为QtDesigner的外部工具连接,以下图:
命令:找到安装好的pyqt5designer.exe,若是使用anaconda,anaconda3.6下安装的pyqt5的designer,文件名就是designer.exe
参数:启动designer是默认打开生成的ui文件名,若是不设置,就是untitled,根据我的喜爱,是否设置默认值。不设置此项则保存文件时,会提示输入文件名的。
初始目录:默认保存ui文件的文件夹,通常设置为跟项目同样。
相似过程,新建一个PyUIC5的外部工具连接:
命令:找到pyuic5.exe
参数:默认将选中的ui文件,转换为py文件
初始目录:通常设置为项目相同
相似的,继续新建PyRCC5的连接:
命令:找到pyrcc5.exe
参数:将选中的qrc文件,转换为py文件
初始目录:通常跟项目相同框架
上述3个新建工具界面中,
a、提示输入参数,勾选,则调用时会弹出确认框
b、使用输出窗口,勾选,则打开一个输出窗口,显示执行结果svg
至此,配置完成。工具
动手第一个vs2017下的pyqt5程序
新建一个python解决方案,设置好python环境
能够选择python,也能够选择anaconda
VS2017的工具启动QtDesigner
新建一个ui,并保存
将刚才生成的ui加到项目中
添加,现有文件,注意类型选全部
利用工具里的PyUIC5,将ui转为py
选中刚加入的ui文件,工具=》PyUIC5
这个ui文件,其实就是xml格式存储的
若是配置外部工具时,勾选了提示参数,则会弹出下图确认
将转换出来的py文件添加到项目
6. 在应用程序的主py中,进行相关动做编码
本贴在HellowPyQt5InVS2017.py中添加处理代码ui
# -*- coding: utf-8 -*-
from HellowPyQt5InVS2017Form import Ui_Dialog
# import PyQt5
import sys
import cv2
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QImage, QPixmap
class MyWindow(QMainWindow, Ui_Dialog):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setupUi(self)
self.pushButton.clicked.connect(self.OnPushButton1)
num = 0
def OnPushButton1(self):
self.textEdit.append("HellowPyQt5")
self.num += 1
self.setWindowTitle("pushbutton has been clicked {0} times".format(self.num))
return None
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MyWindow()
mainWindow.show()
sys.exit(app.exec_())
执行结果