近期有在windows上做个简单UI软件的需求,选择python编程语言 和 pyside6制作交互UI,vscode做IDE。有的博主推荐pycharm,我用着有顾虑,code。参考我之前的测试流程和几个网络博主的blog,做基本环境搭建。
记录过程如下,以作参考:
总览:
一、基本环境准备
二、安装
2.1 python (使用miniconda)
2.2 安装pyside6
2.3 安装vscode
2.4 安装python3打包程序
三、测试例程
一、基本环境准备
1.1 简述
在windows10上,使用python语言,设计UI软件,使用pyside6库,IDE使用vscode,最后还要使用pyinstaller将py代码打包成exe执行文件。
windows上没有自带python,想要使用python需要单独安装。python的一些库、包、插件等是直接安装在python文件夹里的,不通版本的会互相冲突,有时会出现异常。一旦出问题要重新装。因此,使用到一定阶段会有想要几个互不影响的python的想法。这里使用Anaconda作为python环境管理软件,它可以单独创建互不干扰的python,原内核还保持纯净,随时可以创建python环境,减少不同项目之间的干扰。Miniconda是Anaconda的简化版,在需要的库不多的时候可以事情轻量化的Miniconda。
python安装(创建环境)完成、pyside6安装完后,vscode需要修改相关设置才能使用上刚刚安装的功能。
最后使用pyinstaller将py脚本(代码)打包成一个exe文件。
二、安装
windows有个检索工具叫everything,后续要用到,提前安装。也可以安装uTools,然后使用Alt+空格打开工具框进而调用everything来检索。
2.1 安装python,miniconda
2.1.1 下载、安装
地址https://repo.anaconda.com/miniconda/,我下载的是这个版本,python3.13

双击安装没什么可说的,我装在D盘根目录了。
安装后,在开始菜单能找到Anaconda Prompt应用控制台。在这里使用conda的相关命令来处理相关python环境问题。看到第一样 最左边有(base),说明当前激活的环境是base。base是最核心的环境,我通常不在这里安装任何包,都是创新新的环境,在新环境里操作。
conda env list ,使用此命令查看所有存在的环境。目前应该是只有一个base,并且标识了他的位置。
2.1.2 创建环境
conda create -n py-easy python=3.13
我创建了一个 py-easy 的测试python环境,版本为3.13,创建后 conda env list结果变成:

新创建的环境能看到了,但是被存储在C盘用户文件夹下了,我目前不会改,过后再研究。
目前激活的是base,如果安装和卸载包是对base的操作,需要切换
conda activate py-easy,将激活环境切换到py-easy,如下图

如果使用的是PowerShell Prompt,就是多了PS,其余都和Prompt一样。

2.2 安装pyside6
2.2.1 安装
切换py-easy后,使用 pip install pyside6,安装。没用pip3,也没用清华源,不理它,干别的去了,回来也装好了。

指定源的命令也可以试试。
pip3 install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2.2 打开designer
没添加环境变量情况下,不能直接命令行打开,使用uTools检索designer,点击"文件检索"俺就来查找具体路径。

改为designer.exe后,有3个结果,一个收我自己创建的桌面快捷方式。打开designer.exe,能正常打开就行。

打开后,这样子就行,直接关闭,进行下一步。

2.3 安装vscode
2.3.1 安装vscode
官网下载安装包,双击安装
2.3.2 安装3个插件,2个python。一个pyqt
Python,Python debugger,都是python编程用的


解释器选择 【2.1.2】里创建的环境的路径,这是我的路径,要填入自己的。
C:\Users\user\.conda\envs\py-easy\python.exe。
然后是PYQT Integration插件

2.3.3 配置PYQT Integration插件

需要配置4个,Pylupdate:Cmd,Pyrcc:Cmd,Pyuic:Cmd,Qtdesigner:Path。
这里有个问题,需要填入的是需要使用的python环境的程序绝对路径,不是当前解释器的相对路径,更换解释器需要修改。我也不会使用相对路径,下面是我的路径,需要填入自己的。
C:\Users\user\.conda\envs\py-easy\Scripts\pyside6-lupdate.exe
C:\Users\user\.conda\envs\py-easy\Scripts\pyside6-rcc.exe
C:\Users\user\.conda\envs\py-easy\Scripts\pyside6-uic.exe
C:\Users\user\.conda\envs\py-easy\Lib\site-packages\PySide6\designer.exe
找不到的使用everything查找。
2.4 安装python3打包程序
我也没更换源,直接安装,也不慢。
bash
pip3 install pyinstaller

打包后,将源码打包成一个完整的可执行文件,有2中方式:
-
pyinstaller xxx.py,生成执行文件,附带一个文件夹
-
pyinstaller -F xxx.py, 合成一个,单个文件在其他机器上可运行
-
pyinstaller -F -w xxx.py, 合成一个,单个文件在其他机器上可运行,禁止控制台显示
注意:窗体UI程序,使用-w来禁止控制台的显示。但是先不禁止,控制台可以显示错误信息,没错误最后再使用-w来禁止控制台,只显示窗体。
三、测试例程
测试代码和过程都和我上一个blog一样,亲测,效果完全一样。
3.1 基本测试
vscode打开文件夹,空白处右键,菜单里出现PYQT(插件通用的)的选项,空白文件夹只有新建,有UI后会有新建、修改和编译。

点击后,打开了Qt designer,创建一个widget,随便填几个控件


保存到ui文件(例如命名为ui.ui)以后,右键ui.ui,编译,会生成Ui_ui.py,里面创建了窗口类。


新建一个py文件,例如testwidget.py,python语言。pyside6的基本调用结构,与pyqt是一样的。类Ui_Form就是之前绘制的窗口类。
python
'''
testwidget.py
'''
from Ui_ui import Ui_Form
from PySide6.QtWidgets import QApplication, QWidget
class MyWindow(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QApplication([])
win = MyWindow()
win.show()
app.exec()
运行testwidget.py,效果如下,成功运行~~。窗体没改,所以不用重新编译窗体。

3.2 试试信号和槽功能
窗口内控件名称都是默认的,修改testwidget.py
python
'''
testwidget.py
'''
from Ui_ui import Ui_Form
from PySide6.QtWidgets import QApplication, QWidget
class MyWindow(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
self.count = 0
self.bind()
def bind(self):
self.pushButton.clicked.connect(self.setshowtext)
self.pushButton.clicked.connect(self.increasecount)
self.dial.valueChanged.connect(self.setshowvalue)
def setshowtext(self):
self.label.setText('Hello pyside6! ' + str(self.count))
def increasecount(self):
self.count = self.count + 1
def setshowvalue(self):
self.lcdNumber.display(self.dial.value())
if __name__ == '__main__':
app = QApplication([])
win = MyWindow()
win.show()
app.exec()
运行之后,点击按钮,右边label出现文本及点击次数;转动旋钮,右边LCD显示对应数字。

功能完善~~
3.3 测试打包
3.3.1 环境变量
使用pyinstall进行打包,pyinstall不能默认再cmd里执行,要先添加环境变量。还是使用everything查找pyinstaller的位置,将它的所属文件夹路径添加进环境变量Path中。如图的最后一行。

3.3.2 在cmd中使用命令行打包
回到代码文件夹,鼠标点击地址栏,路径被选中,然后直接输入cmd,cmd就会切换到当前文件夹,就可以命令行处理当前文件夹下的文。

cmd内输入:
bash
pyinstaller -F testwidget.py
一顿乱七八糟的消息闪过,多了个dist文件夹,里面有个exe文件,运行后确实会带个命令行。测试正常后关闭。

cmd内输入如下命令,这次使用-w禁用命令行:
bash
pyinstaller -F -w testwidget.py
结果如所想,拷贝到其他windows10电脑上时候,正常!
pyinstaller还有其他功能,比如修改打包后的名字,后续钻研。
完结撒花~~~~~~~~~~~~~~~~~
参考的blog地址:
miniconda:
https://blog.csdn.net/Hahafantuan/article/details/149864604
ubuntu pysicode vscode:
https://blog.csdn.net/qq_38089394/article/details/136578957?spm=1001.2014.3001.5502
windows vscode pyside6:
https://blog.csdn.net/m0_73062138/article/details/147293973
windows pyinstaller