环境:win7sp1 qt5.12
第一步:安装python3.5+
https://www.python.org/
官网下载二进制安装,记得选上 添加到环境变量
验证:命令行 python -V
安装python支持工具:
1,安装代码检查分析器 pip install pylint 或者pip install flake8
2,安装代码格式化工具 pip install yapf 这样vscode里ctrl+shift+F 就可以自动格式化代码
第二步:安装clang3.9+
http://llvm.org/
官网下载二进制安装包,安装LLVM,因为Clang是LLVM的一部分,这样自动安装了。
参考博客:
https://www.jianshu.com/p/861c1a630059
https://blog.csdn.net/zero0one1/article/details/80516423
第三步:安装pyside2
qt for python实际是pyside2的新名字。
pip是python的包管理工具,就像 apt或yum类似。
命令行:pip install PySide2
第四步:配置编辑器,我选择的是vscode
下载安装:https://code.visualstudio.com/
1,安装中文支持拓展包--搜chinese 选微软出品的,安装
2,安装python拓展包--搜python 选官网出品的
3,选择用flake8或pylint
文件--首选项--配置--搜python.linting.flake8Enabled或python.linting.pylintEnabled
勾选或取消
4,配置拓展模块pyside2,以便于vscode词法分析
文件--首选项---配置--搜flake8Args 或pylintArgs 进入编辑settings.json
添加:
pylint的配置:搜索pylintargs
"python.linting.pylintArgs": [
"----extension-pkg-whitelist=PySide2"
]
flake8的:Flake8Args 搜索
"python.linting.flake8Args": [
"----extension-pkg-whitelist=PySide2"
],
5,安装qt for python的vscode插件:pyside2 vsc
文件--首选项--配置--拓展里--添加你的desginer.exe路径
这个路径在python目录:比如C:\Python\Python35\Lib\site-packages\PySide2\desiner.exe
以后UI文件的创建等都可以在vscode右键搞了
a,创建新UI窗体
b,.ui编译成python 不用命令行手动 uic了
c,直接用qtdesginer打开ui文件编辑
d,可以预览效果
第五步:qt的ui文件转成py
命令行:pyside2uic xx.ui -o xx.py
vscode:选择ui文件---右键
第六步:UI创建方式选择
1,QWeight方式,这是传统的方式,是基于2D方式。功能相对全一些。
目前提供了desginer.exe在qt for python里。
因为我们一般的应用项目用这个就够了。
2,qxml+quick,这是现代的方式,是基于3D场景的方式,比较酷炫。
Qt creator c++的版本里提供了qmlscene.exe
但是python版本里目前没发现,以后可能会有吧,
qt creator4.9 beta1版本貌似是有了。而且支持qt for python
但是为了体量,还是不太喜欢用qtcreator啦,因为vscode更轻量级 比较符合python定位
还是不推荐这种方式。因为感觉有点不伦不类
其实就是用js去操作,而不是C++
第七步:测试程序
a.py 测试qt for python是否安装成功
import PySide2.QtCore
print(PySide2.QtCore.qVersion())
b.py 测试gui是否正常
import sys
import random
from PySide2 import QtCore, QtWidgets, QtGui
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.hello = ["Hallo Welt", "你好,世界", "Hei maailma",\
"Hola Mundo", "Привет мир"]
self.button = QtWidgets.QPushButton("Click me!")
self.text = QtWidgets.QLabel("Hello World")
self.text.setAlignment(QtCore.Qt.AlignCenter)
self.text.setFont(QtGui.QFont("Titillium", 30))
self.button.setFont(QtGui.QFont("Titillium", 20))
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.setLayout(self.layout)
self.button.clicked.connect(self.magic)
def magic(self):
self.text.setText(random.choice(self.hello))
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = MyWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())
dp.py dp.ui 测试是否ui能转py
转成功的dp.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'dp.ui',
# licensing of 'dp.ui' applies.
#
# Created: Thu Apr 18 09:13:35 2019
# by: pyside2-uic running on PySide2 5.12.2
#
# WARNING! All changes made in this file will be lost!
from PySide2 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(250, 170, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "MainWindow", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("MainWindow", "PushButton", None, -1))
总结:我的QQ1400168169 我们可以一起探讨