qt for python (一):安装配置

环境: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



 MainWindow
 
 
  
    0
    0
    800
    600
  

 

 
   MainWindow
 

 
  
   
    
      250
      170
      75
      23
    

   

   
     PushButton
   

  

 

 
  
   
     0
     0
     800
     23
   

  

 

 
 

 
 

转成功的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 我们可以一起探讨

 

你可能感兴趣的:(Qt,for,Python)