【Python】使用PySide6 + Qt Designer创建简易用户界面(含用户交互)
文章目录
相关代码运行环境
电脑系统:Windows 11
Python版本:3.12.4
使用的Python开发环境:PyCharm Community Edition 2024.1
操作过程
1.PySide6和Qt Designer的安装
首先需要确认是否已安装pip库,使用快捷键win+R,输入cmd打开终端,输入pip -V语句,如果出现如下显示,则代表pip已安装
如果没有安装成功,会提示:“pip”不是内部或外部命令,也不是可运行的程序或批处理文件,在cmd中输入以下命令进行安装:
py -m ensurepip --upgrade
在cmd中输入以下命令安装PySide6:
pip install pyside6
在以下地址安装Qt Designer
Qt Designer安装官网
2.创建外部工具PyUIC和Qt Designer
首先说明我们所需要用到的这两个工具的作用:
Qt Designer:自定义用户界面(包括按钮、文本框等),完成后生成.ui文件
PyUIC:将.ui文件转换为.py文件,右键运行即可看到我们之前制作的用户图形界面(以窗口展示)
新建项目以及配置环境详见之前的文章:【Python】Tkinter + Pandas实现窗口表格显示
在我们新建的项目中,点击左上角文件->设置->工具->外部工具
我们新建外部工具,名称随意填写(自己认得出就行),工具设置中程序一栏选择designer.exe的存放位置,一般在python->Lib->site_packages->PySide6中
实参部分填写:$FilePath$(或者不填也行)
工作目录在程序一栏填写完成后会自动填充(或者也可以填写:$ProjectFileDir$
如下图所示:
外部工具PyUIC的设置同上,其中pyside6-uic.exe存放于python->Scripts
实参部分填写:$FileName$ -o $FileNameWithoutExtension$.py
工作目录在程序一栏填写完成后会自动填充(或者也可以填写:$FileDir$
3.Qt Designer的简单使用说明
现在我们已经配置好了外部工具,在PyCharm中右键我们的工程文件夹,在外部工具中找到我们刚刚设置的Qt Designer,打开后界面如下:
我们选择Widget并创建,可以看到,左侧是组件板块,中间是设计板块,右侧是信息板块(包含组件、信号/槽等信息)
在左侧组件板块中选择push button和text browser置于中间设计板块中,一个简单的界面就完成了,在右侧的信息板块中我们可以修改这些组件的名称(组件较多时建议修改,方便后续代码中的引用)
保存该工程文件于我们刚刚的项目文件夹中,我们可以看到一个.ui类型的文件,点击进去就可以打开我们刚刚的设计界面
右键该.ui文件,选择外部工具中的PyUIC,将其转换为.py文件(注意后续如果修改该界面改变的是.ui文件,不会改变.py文件,需要重新使用PyUIC生成新的.py文件)
新建.py文件,通过from “.ui生成的.py文件名” import Ui_Form
获取之前的ui设计,通过该新建的.py文件我们可以实现所需的功能
4.完整代码展示以及最终结果
由于代码较简单就不逐行说明了,代码中注释应该可以完整解释
import sys
from PySide6 import QtWidgets
from test1 import Ui_Form
count = 0
class MyPyQT_Form(QtWidgets.QWidget, Ui_Form):
def __init__(self):
super(MyPyQT_Form, self).__init__()
self.setupUi(self) # 设置初始ui界面
self.pushButton.clicked.connect(self.pushButton_click) # 调用按钮点击函数
def pushButton_click(self):
global count
count += 1
textline = '按下按键'+str(count)+'次'
self.textBrowser.append(textline)
# 打印信息至textBrowser(append打印是在之前的文本后面换行添加新文本,想覆盖之前文本打印的话可以使用setText)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
my_pyqt_form = MyPyQT_Form()
my_pyqt_form.show()
sys.exit(app.exec())
# 将最终界面显示在窗口
最终运行结果如下: