零基础也能做上位机?用 Python + PyQt 搭建你的第一个工业监控界面
你有没有过这样的经历:手里的 STM32 或 Arduino 正在采集温度、电压,数据哗哗地往外冒,但只能靠串口助手“看数字”?想画个曲线图得手动复制粘贴到 Excel,调试起来又慢又累。
其实,只要你会点 Python,就能自己做一个 带按钮、有图表、能实时刷新的上位机软件 ——就像工厂里那些高端设备的操作面板一样。今天我们就来手把手实现它, 不需要任何 GUI 基础,也不用懂复杂的通信协议 ,一步步带你从零做出一个真正可用的工程级监控工具。
为什么是 Python + PyQt?
说到上位机开发,很多人第一反应是 C# 或 LabVIEW。没错,它们功能强大,但也意味着你要学新语言、装特定环境、甚至花钱买授权。
而 Python 不同:
- 语法简单 :几行代码就能完成串口收发
- 生态丰富 :PyQt 做界面,pyserial 处理通信,Matplotlib 绘图……轮子早就准备好了
- 跨平台运行 :写一次代码,Windows、Linux、macOS 都能跑
- 适合快速验证 :学生做毕设、工程师调原型,效率拉满
更重要的是, PyQt 把 Qt 这个工业级 UI 框架搬到了 Python 上 ,这意味着你不仅能做个“能用”的程序,还能做出看起来很专业的桌面应用。
先搭个“壳子”:用 PyQt5 创建你的第一个窗口
我们先不急着连单片机,先把界面搞起来。想象一下,你未来的上位机长什么样?至少得有个窗口、一个按钮吧?
下面这段代码,就是所有 PyQt 应用的“起点模板”:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个按钮
self.btn = QPushButton(\’开始采集\’, self)
self.btn.clicked.connect(self.on_click) # 点击时触发函数
# 布局管理:垂直排列
layout = QVBoxLayout()
layout.addWidget(self.btn)
self.setLayout(layout)
# 设置窗口标题和大小
self.setWindowTitle(\’上位机主界面\’)
self.setGeometry(300, 300, 300, 200)
def on_click(self):
print(\”数据采集已启动…\”)
if __name__ == \’__main__\’:
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
别被这么多行吓到,核心就三件事:
<
