工业人机交互界面的核心:Pyside6

2025-04-13 23:29
19

摘要

传统工业质检依赖人工抽检,成本高且效率有限。随着机器视觉的普及,基于深度学习的自动化检测大幅提升了准确性与效率,而人机交互界面(HMI)成为连接算法与人类决策的核心纽带。本文聚焦 PySide6 这一工业级GUI开发工具,简要介绍了其基本概念和原理,解释了对比同类框架的独特优势,并结合布局管理、信号槽通信等核心技术,展示其在实时监控、参数调试、人工复检场景中的应用。通过多线程任务分发与C++扩展能力,PySide6“低代码+高扩展性”重塑工业人机交互体验,为中小工业检测企业产品的开发提供核心技术


1.人机交互

过去,为了保证工业零件等产品的质量,企业需要在流水线上安排大量质检员,对零件进行抽查,用统计学的方法确认一批零件的质量情况。如今大部分的工业检测都采用机器学习训练的模型进行,相机可以通过连接电脑实时检测缺陷,并对有缺陷的零件进行响应。我们无需再安排大量人手来进行抽测,这无疑大大降低了用于检测的成本,并且在某种程度上还提高了检测的准确度。这也使得人机交互更加重要,管理者可以通过合理的人机交互得到更多关于流水线上的信息,及时做出决策。因此,工业软件人机交互界面的设计十分重要。

一个完善的人机交互界面一般包括:

1实时监控:缺陷分类统计的显示、报警日志等,便于质检员随时对流水线进行观察;

2检测参数:相机曝光时间、光源亮度、算法阈值等,这些能够反应机器检测的质量,质检员可以通过这些参数判定机器反馈的问题是否来自机器本身;

3人工复检:对算法不确定的缺陷进行人工标注,以此作为新的数据标签对模型进行迭代。



2. PySide6 对比其他GUI库的优势

人机交互界面的本质是GUIGUIGraphical User Interface图形用户界面,又称图形用户接口。对于大部分人而言,检测的代码,机器给出的数据并不容易看懂,或者要求需要大量的成本去培训流水线员工。而GUI能够将数据可视化,调试更加简便,通过计算机图形学使得大部分人能够简单看懂机器反馈的情况。

目前流行的GUI库有很多,除了本文主要提到的Pyside6,还有python原生库Tkinter,功能强大的PyQt6,适用移动端的Kivy等等。Pyside6兼具多个优势,比如能够跨平台支持,这使得软件能够部署到多个平台上;对比同类多个库来说,有较快的响应速度,与传统的Tkinter相比,Pyside6拥有更加完善的图形逻辑,允许通过类css语言来让界面更加美观;虽然比不上性能更好的PyQt6,但是Pyside6是免费的,使用Pyside6编写的GUI是允许闭源的。


图片18.png

1 Python语言GUI库的优缺点


值得一提的是,Pyside6PyQt5都可以通过一个叫Qtdesigner的插件来进行UI的设计,这个插件完全不需要编程基础,Pyside6几乎所有的功能都可以在designer中实现,并且界面中各组件的映射还是可以很方便的修改的,可以看出Pyside6享有非常良好的社区生态。


3.Pyside6的核心概念

Pyside6组成的GUI中,几乎所有的图形都可以归纳为两种东西。一种叫组件,组件决定了内容,注意组件之中可以嵌套几乎所有的组件,就像一个盒子一样,里面可以摆放很多小盒子,而小盒子之中可以摆放更小的盒子;另一种是布局,布局决定了组件之间的位置关系,引用上面的比喻,布局就是每个小盒子之间的关系。Pyside6GUI就是许多类型、大小不同的小盒子拼凑成的。

组件有很多种类型,不同的组件具有不同的主要功能不同,例如Qlabel类型组件主要用于展示文字或图片,QEditLine类型主要用于充当输入框,让系统获取输入到其中的文字,QPushButton类型主要充当按钮或者开关,按下时会触发预先设定好的事件。


图片19.png

2 Qtdesigner的界面


以笔者以前写过的一个登录界面为例(图2)。可以看到大部分的组件都被用红框框住,框内又包含了很多更小的框。实际上这里每一个框就是一个布局,布局之中所有的组件按照一定的方式排列。它的结构在图片的右上角十分明显,最大的一个对象叫做Form,是一个QWidget类型的组件,这个组件包含了一个QFrame组件,下面又包含了许许多多的东西这个界面展示了每一个GUI的布局原理。当然,有些时候designer没有办法做到所有事情,他毕竟是一个插件,比如之前提到的Qlabel组件,他主要用于展示单纯的图片或者文字,如果希望它同时展示文字和图标,这在designer中是无法实现的,还需要将生成的ui文件导入到python IDE中用代码的方式来完成。


4.多线程与信号机制

人机交互平台作为工业检测的核心还有一个重要的原因。

有时会要求平台上能够直接显示出缺陷的位置,这需要用到现有的一些经典的模型,例如yolov5yolov8等等。有时候图片质量不高,可能还会先进行一些特殊的处理再进行检测,这就可能消耗不少时间。如果尝试用传统代码思维来思考这个问题,假如说代码需要运行比较耗时的步骤,进行一些复杂的矩阵计算,那么整个代码进程都会停滞,交互界面会被冻结,等待这一个计算完成了CPU才能继续去做其他的事情。这会导致交互的效率大大降低

在人机交互界面中,有一个比较关键的概念需要了解,那就是多线程机制。一个人吃饭时嘴巴在进食,同时眼睛能观察食物的样貌,鼻子能对食物的味道进行辨别,大脑能同时处理这些信息,因而才能够对事物做出多方面的评价。人类的身体不同的部位能够对不同类型的任务进行专门的处理,这样事情才能高效的运作。计算机程序也是如此,GUI作为最直接与人交互的程序,应当保持运行,否则会带来诸多不便。遇到耗时的步骤,应当采用多线程的方法,将这些步骤交由子进程进行。子进程运行完成,只需通过信号来告知主线程的GUI相关信息,GUI就可以提供耗时步骤的结果。在这个期间,GUI还能够为其他的服务提供帮助而不是被耗时步骤堵塞。

这一机制与分工合作的机制相仿,将更为复杂的工作交由其他专门部门处理,专门部门只需返回应有的结果即可。而GUI主线程只需专门为人机交互服务即可,这样才称得上是高效。

Pyside6中,编程者可以通过QThread类来创建子线程,将复杂的步骤交由子线程完成。在子线程中定义信号QtCore.Signal类,当子线程完成后通过信号类的emit()方法将结果发送到主线程,就可以告知主线程相关的信息。


5.结论

Pyside6大大降低了工业软件的门槛,它通过 “低代码+高扩展性” 平衡了快速开发与复杂需求,支持使用QtDesigner快速搭建基础界面,再通过Python代码集成OpenCV算法库来提升人机交互质量Pyside6支持C++扩展模块,比如可以调用高性能相机SDKPyside6中小企业的低成本转型也会产生一定的影响,传统设备厂商可基于PySide6自主开发检测软件,替代以前LabVIEW等高价方案,甚至是采用AI工具通过PyInstaller打包成独立应用,部署至边缘计算设备。Pyside6毫无疑问是工业人机交互界面一颗冉冉升起的新星。


参考来源:

图一:Python Qt 简介 - 白月黑羽