基于深度学习的视觉检测小项目(三) 通过设计一个简单的用户界面设计了解pyside的基本套路
首先必须知道的是,本文所使用的在designer中用图形界面布局,然后使用pyuic转换成.py文件,然后再导入.py文件的方法,特别适合搞过工业控制界面设计的人,比如熟悉WINCC、组态王的。而职业的前端工程师,可能更为熟悉和适合的是在程序中用代码来设计一切,这是完全不同的两条路线。我是从电气控制过来的,所以更适应designer+pyuic的方式。
下面就通过一个最简单的demo,来熟悉一下pyside的designer+pyuic方法的基本套路。主要流程如下:
• 创建项目:
打开pycharm,新建项目,将之前创建的名为yolo8的conda环境设置为解释器。
• 创建目录:
目录结构如下图:
各目录的用途:
media:存放项目所需的媒体文件
projects:存放工程文件,如功能脚本等
settings:存放设置文件
src:存放资源文件
uis:存放界面文件
目录结构没有固定的标准,pyside官网的demo也有它固定的推荐套路,根据自己的使用习惯和编程能力,建立最适合的目录结构即可。
• 创建一个ui文件:
在pycharm中鼠标右键,External tools->QtDesigner,打开designer,在弹出的窗口选择Main Window,点Creat按钮,创建一个主窗口。
将其保存在项目的uis目录下,命名为demo.ui。
• 在主窗口上放置小部件:
从左侧的工具栏中分别拖动一个按钮和文字标签到主窗口上:
将按钮和标签命名为btn_1和label_1 。
• 保存并退出designer。
• 使用pyuic工具将.ui文件转为.py文件:
在pycharm中打开项目,在uis/demo.ui上,鼠标右键->External Tools->PyUic,如下图:
这一步的目的是把之前创建的demo.ui转换为python的.py格式的脚本文件。执行完后,会发现在uis目录下多出了一个demo.py文件:
• 对main.py编程,显示设计的界面:
# encoding: utf-8
import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from uis import demo # 导入经pyuic转换而来的主画面类
# 定义主画面类
class MainWindow(QMainWindow, demo.Ui_MainWindow): # 继承自demo主画面的Ui_MainWindow类
def __init__(self):
super().__init__()
self.setupUi(self) # 确保调用setupUi方法
self.run() # 初始化,这里之所以单独设置了run方法,是因为在执行__init__的阶段,本类还没有实例化,所以不能对类中的小部件,比如按钮进行操作
# 主画面的初始化
def run(self):
self.btn_1.clicked.connect(self.set_label) # 按钮的信号和槽连接
def set_label(self): # 槽函数
self.label_1.setText('点击了按钮') # 设置文字
# #############################主程序###################################
if __name__ == '__main__':
app = QApplication(sys.argv) # 创建应用程序实例
mainWindow = MainWindow() # 创建主窗口实例
mainWindow.show() # 显示主窗口
sys.exit(app.exec()) # 进入应用程序的主循环
运行后出现了错误提示:
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: minimalegl, minimal, wayland-egl, offscreen, linuxfb, vnc, wayland, vkkhrdisplay, xcb, eglfs.
解决办法:
sudo apt install libxcb-cursor0
运行截图: