说明

pyside6只能运行在64位python上, 最低要求python3.6, 也就是说可能没办法运行在32位机器上.
本文展示如何基于pyside6开发一个demo: 输入账号密码,登录进入主窗口。

创建工程

使用趁手的ide创建一个py项目,并创建虚拟机(这个用不用都行),创建好目录和文件:
demo/app.py — 这是程序入口
demo/src/ — 这是放源文件的地方,程序太简单就不分模块了
demo/ui/ — 这是存放ui的地方

安装相关库

pip install pyside6
pip install pyinstaller

画界面

pyside6-designer

到了愉快的拖控件时间了
创建两窗口:
主窗口继承MainWindow,取名叫MainWindow
登录窗口继续Widget, 取名叫LoginForm, 加两个输入框,加一个按钮
在这里插入图片描述
在这里插入图片描述

按F4进入信号槽编辑状态, 选中登录按钮然后拖向信号槽编辑区,弹出编辑窗口
在这里插入图片描述
点编辑,添加一个槽函数,命名为slotClickLoginButton
在这里插入图片描述
在这里插入图片描述
连接好之后的样子:
在这里插入图片描述
Ctrl+S 把两个窗口分别保存为ui/main.ui, ui/login.ui

生成ui类

pyside6-uic ui/main.ui -o ui/ui_main.py
pyside6-uic ui/login.ui -o ui/ui_login.py

转换后,会生成两个文件,是界面对应的py类,这里面就是界面对应的代码了。

逻辑类

接下来把界面类串起来, 业务逻辑就是点击登录按钮,跳转到主窗口

登录窗口类

在src下面创建login.py

from PySide6.QtWidgets import QWidget, QMessageBox
from ui.ui_login import Ui_LoginForm

class LoginWindow(QWidget):
    def __init__(self, mainWindow):
        super(LoginWindow, self).__init__()
        # 保存好父窗口,用于登录后显示父窗口
        self.parent = mainWindow
        # 创建ui
        self.ui = Ui_LoginForm()
        self.ui.setupUi(self)
        # 显示自己
        self.show()

	# 注意这里名称与界面中设定的一致
    def slotClickLoginButton(self):
        userName = self.ui.textEdit_userName.toPlainText()
        password = self.ui.textEdit_password.toPlainText()
        QMessageBox.information(self, '登录', '登录成功:' + userName + '/' + password + ',点击确定跳转到主窗口')
        self.close()
        self.parent.show()

主窗口类

在src下面创建main.py

from PySide6.QtWidgets import QMainWindow
from src.login import LoginWindow
from ui.ui_main import Ui_MainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        # 创建ui
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        # 创建登录类
        self.loginWindow = LoginWindow(self)
        # 隐藏自己
        self.hide()

启动类加入启动代码

编辑app.py

import sys
from PySide6.QtWidgets import QApplication
from src.main import MainWindow

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    app.exec()

运行效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到这基本功能没有问题了,接下来开始打包

打包

使用pyinstaller打包,它是基于你当前环境的,比如当前环境是linux那它就只能打出linux的包,是windows就只能打出windows的包, emmm…不是很方便,希望以后能改进吧wx.

pyinstaller -w -F app.py -n demo

demo是指生成程序的名称
一切顺利的话,会在当前目录的dist文件夹中看到demo程序,运行一下,没问题。

增加启动界面

程序怎么能没有启动界面呢, 做一个相当简单(哦,现在也只能支持windows, 当前pyinstaller版本为4.10)
找一个760*480的png图片, (不能太大,也只能是png), 命名为start_image.png
然后重新打包:

pyinstaller -w -F app.py -n demo.exe --splash start_image.png

然后发现,怎么启动后画面还在呢,因为要手动关闭它
在主窗口中加入关闭指令:

    def closeSplash(self):
        try:
            import pyi_splash
            pyi_splash.update_text('UI Loaded ...')
            pyi_splash.close()
        except:
            pass

重新打包,一切ok, 一个相当easy的demo就完事了,完整代码放在github上了:
https://github.com/crazyman2010/pyside6-demo

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐