145 lines
5.5 KiB
Python
145 lines
5.5 KiB
Python
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)
|
||
|
||
# 线径串口设置
|
||
xj_group = QGroupBox("线径串口")
|
||
xj_layout = QFormLayout(xj_group)
|
||
|
||
# 串口选择
|
||
xj_port_layout = QHBoxLayout()
|
||
self.xj_port_combo = QComboBox()
|
||
self.xj_refresh_btn = QPushButton("刷新")
|
||
xj_port_layout.addWidget(self.xj_port_combo)
|
||
xj_port_layout.addWidget(self.xj_refresh_btn)
|
||
xj_layout.addRow("串口:", xj_port_layout)
|
||
|
||
# 波特率
|
||
self.xj_baud_combo = QComboBox()
|
||
for baud in ["1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200"]:
|
||
self.xj_baud_combo.addItem(baud)
|
||
xj_layout.addRow("波特率:", self.xj_baud_combo)
|
||
|
||
# 数据位
|
||
self.xj_data_bits_combo = QComboBox()
|
||
for bits in ["5", "6", "7", "8"]:
|
||
self.xj_data_bits_combo.addItem(bits)
|
||
xj_layout.addRow("数据位:", self.xj_data_bits_combo)
|
||
|
||
# 停止位
|
||
self.xj_stop_bits_combo = QComboBox()
|
||
for bits in ["1", "1.5", "2"]:
|
||
self.xj_stop_bits_combo.addItem(bits)
|
||
xj_layout.addRow("停止位:", self.xj_stop_bits_combo)
|
||
|
||
# 校验位
|
||
self.xj_parity_combo = QComboBox()
|
||
for parity in [("无校验", "N"), ("奇校验", "O"), ("偶校验", "E")]:
|
||
self.xj_parity_combo.addItem(parity[0], parity[1])
|
||
xj_layout.addRow("校验位:", self.xj_parity_combo)
|
||
|
||
|
||
# 将三个组添加到布局
|
||
serial_layout.addWidget(mdz_group, 0, 0)
|
||
serial_layout.addWidget(xj_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_xj_btn = QPushButton("测试线径串口")
|
||
test_layout.addWidget(self.test_mdz_btn)
|
||
test_layout.addWidget(self.test_xj_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() |