jiateng_ws/ui/serial_settings_ui.py

150 lines
5.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PySide6.QtWidgets import (
QWidget, QLabel, QLineEdit, QComboBox, QCheckBox,
QGridLayout, QGroupBox, QPushButton, QHBoxLayout,
QVBoxLayout, QFormLayout, QSpinBox
)
from PySide6.QtCore import Qt, Signal
class SerialSettingsUI(QWidget):
"""串口设置UI组件"""
# 定义信号
settings_changed = Signal()
def __init__(self, parent=None):
super().__init__(parent)
self.init_ui()
def init_ui(self):
"""初始化UI"""
main_layout = QVBoxLayout(self)
# 创建全局启用选项
enable_layout = QHBoxLayout()
self.enable_serial_checkbox = QCheckBox("启用串口功能")
self.enable_keyboard_checkbox = QCheckBox("启用键盘监听 (PageUp 触发米电阻查询)")
enable_layout.addWidget(self.enable_serial_checkbox)
enable_layout.addWidget(self.enable_keyboard_checkbox)
enable_layout.addStretch()
main_layout.addLayout(enable_layout)
# 创建串口设置组
serial_group = QGroupBox("串口设置")
serial_layout = QGridLayout(serial_group)
# 米电阻串口设置
mdz_group = QGroupBox("米电阻串口")
mdz_layout = QFormLayout(mdz_group)
# 串口选择
mdz_port_layout = QHBoxLayout()
self.mdz_port_combo = QComboBox()
self.mdz_refresh_btn = QPushButton("刷新")
mdz_port_layout.addWidget(self.mdz_port_combo)
mdz_port_layout.addWidget(self.mdz_refresh_btn)
mdz_layout.addRow("串口:", mdz_port_layout)
# 波特率
self.mdz_baud_combo = QComboBox()
for baud in ["1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200"]:
self.mdz_baud_combo.addItem(baud)
mdz_layout.addRow("波特率:", self.mdz_baud_combo)
# 数据位
self.mdz_data_bits_combo = QComboBox()
for bits in ["5", "6", "7", "8"]:
self.mdz_data_bits_combo.addItem(bits)
mdz_layout.addRow("数据位:", self.mdz_data_bits_combo)
# 停止位
self.mdz_stop_bits_combo = QComboBox()
for bits in ["1", "1.5", "2"]:
self.mdz_stop_bits_combo.addItem(bits)
mdz_layout.addRow("停止位:", self.mdz_stop_bits_combo)
# 校验位
self.mdz_parity_combo = QComboBox()
for parity in [("无校验", "N"), ("奇校验", "O"), ("偶校验", "E")]:
self.mdz_parity_combo.addItem(parity[0], parity[1])
mdz_layout.addRow("校验位:", self.mdz_parity_combo)
# 查询指令
self.mdz_query_cmd = QLineEdit()
mdz_layout.addRow("查询指令:", self.mdz_query_cmd)
# 查询间隔
self.mdz_query_interval = QSpinBox()
self.mdz_query_interval.setRange(1, 60)
self.mdz_query_interval.setSuffix("")
mdz_layout.addRow("查询间隔:", self.mdz_query_interval)
# 线径串口设置
cz_group = QGroupBox("线径检测串口")
cz_layout = QFormLayout(cz_group)
# 串口选择
cz_port_layout = QHBoxLayout()
self.cz_port_combo = QComboBox()
self.cz_refresh_btn = QPushButton("刷新")
cz_port_layout.addWidget(self.cz_port_combo)
cz_port_layout.addWidget(self.cz_refresh_btn)
cz_layout.addRow("串口:", cz_port_layout)
# 波特率
self.cz_baud_combo = QComboBox()
for baud in ["1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200"]:
self.cz_baud_combo.addItem(baud)
cz_layout.addRow("波特率:", self.cz_baud_combo)
# 数据位
self.cz_data_bits_combo = QComboBox()
for bits in ["5", "6", "7", "8"]:
self.cz_data_bits_combo.addItem(bits)
cz_layout.addRow("数据位:", self.cz_data_bits_combo)
# 停止位
self.cz_stop_bits_combo = QComboBox()
for bits in ["1", "1.5", "2"]:
self.cz_stop_bits_combo.addItem(bits)
cz_layout.addRow("停止位:", self.cz_stop_bits_combo)
# 校验位
self.cz_parity_combo = QComboBox()
for parity in [("无校验", "N"), ("奇校验", "O"), ("偶校验", "E")]:
self.cz_parity_combo.addItem(parity[0], parity[1])
cz_layout.addRow("校验位:", self.cz_parity_combo)
# 稳定阈值
self.cz_stable_threshold = QSpinBox()
self.cz_stable_threshold.setRange(1, 30)
self.cz_stable_threshold.setSuffix("")
cz_layout.addRow("稳定阈值:", self.cz_stable_threshold)
# 将两个组添加到布局
serial_layout.addWidget(mdz_group, 0, 0)
serial_layout.addWidget(cz_group, 0, 1)
# 设置列伸缩因子使两列等宽比例1:1
serial_layout.setColumnStretch(0, 1)
serial_layout.setColumnStretch(1, 1)
main_layout.addWidget(serial_group)
# 测试按钮
test_layout = QHBoxLayout()
self.test_mdz_btn = QPushButton("测试米电阻串口")
self.test_cz_btn = QPushButton("测试线径串口")
test_layout.addWidget(self.test_mdz_btn)
test_layout.addWidget(self.test_cz_btn)
test_layout.addStretch()
main_layout.addLayout(test_layout)
# 保存按钮
button_layout = QHBoxLayout()
self.save_btn = QPushButton("保存设置")
self.save_btn.setStyleSheet("background-color: #e3f2fd; border: 1px solid #2196f3; padding: 8px 16px; font-weight: bold; border-radius: 4px;")
button_layout.addStretch()
button_layout.addWidget(self.save_btn)
main_layout.addLayout(button_layout)
main_layout.addStretch()