一个pyside6.0 demo
说明pyside6只能运行在64位python上, 最低要求python3.6, 也就是说可能没办法运行在32位机器上.本文展示如何基于pyside6开发一个demo: 输入账号密码,登录进入主窗口。创建工程使用趁手的ide创建一个py项目,并创建虚拟机(这个用不用都行),创建好目录和文件:demo/app.py— 这是程序入口demo/src/— 这是放源文件的地方,程序太简单就不分模块了dem
说明
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
更多推荐
所有评论(0)