Qt for Python: Pycharm搭建+QtDesigner搭配使用+Pyinstaller编译可执行文件

一.  搭建篇

1.   Python 安装

    1) Python3.8.2 下载 安装

        https://www.python.org/downloads/release/python-382/

    Note: 安装路径要记录好, 后续PyCharm/QtCreator配置Python版本的时候需要用到

 

2.   Pycharm安装

    1) PyCharm下载

        https://www.jetbrains.com/pycharm/download/#section=windows

    2) 安装

        下载好的pycharm进行安装,也就是不断下一步, 至于长久使用方法, 各自本事

    3) 添加python版本支持

        也就是pycharm在编译的时候选择python的版本, 不同python版本按照的模块支持不一样, 也就是决定了最终编译的有效性

        ① Pycharm -> File -> Settings -> Project: xxx(xxx是自己创建的工程名字)-> Project Interpreter, 配置如图1;

        ② 选择完成之后点击 “OK”, 如图2;

        ③ 点击“Apply” 应用功能, 如图3

 

                                                                                    图1. Python选择

 

                                                                                    图2. Python选择确认

 

                                                                                    图3. 选择环境信息

 

3.   PySide2 安装

    1) 管理员方式运行powershell;

    2) 使用pip3 非使用 pip

    3) 指令

        pip3 install -i  https://pypi.tuna.tsinghua.edu.cn/simple pyside2 

       Note: 安装过程报错, 按照报错提示升级一下pip 再重新执行一下 (3)

    4) 安装pyside2之后可配置QtCreator搭配Qt forPython使用

        https://blog.csdn.net/halo_hsuh/article/details/106030201

    5) 打开Pycharm, 再回看2步骤中就会看到PySide2模块了, 如图3

 

4.   QtDesigner使用

    在安装的Pyside2目录下即包含了Qt工具 designer.exe 和 linguist.exe, 如图4

    QtDesigner 搭配 python 使用, 将更加快编程速度

 

    1) 打开”designer.exe”

    2) 新建窗体

 

    3) 编辑UI

        ① 拉两个 QLabel显示 名字 和 年龄, 一个QPushButton触发事件

        ② 另存为 例如(ui_mainwindow.ui)

 

    4) Ui文件转为python文件

        pyside2-uic.exe ui_mainwindow.ui > ui_mainwindow.py # 将ui文件转化成python代码

   ui_mainwindow.py         

# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'ui_mainwindow.ui'
##
## Created by: Qt User Interface Compiler version 5.14.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide2.QtCore import (QCoreApplication, QDate, QDateTime, QMetaObject,
    QObject, QPoint, QRect, QSize, QTime, QUrl, Qt)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,
    QFontDatabase, QIcon, QKeySequence, QLinearGradient, QPalette, QPainter,
    QPixmap, QRadialGradient)
from PySide2.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(808, 368)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")
        self.label.setGeometry(QRect(330, 30, 72, 15))
        self.label.setAlignment(Qt.AlignCenter)
        self.label_2 = QLabel(self.centralwidget)
        self.label_2.setObjectName(u"label_2")
        self.label_2.setGeometry(QRect(330, 60, 72, 15))
        self.label_2.setAlignment(Qt.AlignCenter)
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(340, 280, 93, 28))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 808, 26))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.label.setText(QCoreApplication.translate("MainWindow", u"Name", None))
        self.label_2.setText(QCoreApplication.translate("MainWindow", u"Age", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"Click", None))
    # retranslateUi

         

 

    5) 使用

         ① 创建工程

 

         ② 将 4(上一步)生成的代码 拷贝到当前工程目录

         ③ 创建main.py文件

         

 

         ④ 调用UI代码

main.py

import sys
import random
from PySide2 import QtGui, QtWidgets, QtCore
from PySide2.QtWidgets import QApplication, QMainWindow
from ui_mainwindow import Ui_MainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

 

         ⑤ 第一次运行

 

         ⑥ 效果

 

二.  编译篇

1. Python 交叉编译

    1)  编译交叉编译工具;

    2)  直接不同平台安装;

 

2. 编译可执行程序

    1) 安装 pyinstaller

        pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

 

    2) 指令生成执行程序(Windows下生成exe)

        pyinstaller -F -w main.py

 

三.  参考

浅尝Qt for Python - https://blog.csdn.net/halo_hsuh/article/details/106030201

Python爱好者的Qt入门手册 - https://gitee.com/se7enXF/pyside2/tree/master

PyInstaller – 按照和更新 http://www.pyinstaller.org/downloads.html

                  – 文档 https://pyinstaller.readthedocs.io/en/stable/usage.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听我一言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值