T1L_Config/batch_dialog.py
2025-06-25 10:58:59 +08:00

113 lines
4.2 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.

import sys
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QHBoxLayout, QTableWidget, QTableWidgetItem, \
QPushButton, QCheckBox
class BatchOperationDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("批量操作节点")
self.setGeometry(100, 100, 800, 400)
# 初始化UI
self.init_ui()
def init_ui(self):
# 主布局
main_layout = QVBoxLayout()
# 创建表格8列初始行数可以设置为10
self.table_widget = QTableWidget(10, 8) # 10行8列
self.table_widget.setHorizontalHeaderLabels(
["选择", "IP地址", "MAC地址", "版本号", "通道1名称", "通道1绑定设备", "通道2名称", "通道2绑定设备"]
)
# 使通道列可编辑
for row in range(self.table_widget.rowCount()):
self.table_widget.setItem(row, 4, QTableWidgetItem()) # 通道1名称
self.table_widget.setItem(row, 5, QTableWidgetItem()) # 通道1绑定设备
self.table_widget.setItem(row, 6, QTableWidgetItem()) # 通道2名称
self.table_widget.setItem(row, 7, QTableWidgetItem()) # 通道2绑定设备
# 添加勾选框到第1列
for row in range(self.table_widget.rowCount()):
check_box_item = QTableWidgetItem()
check_box_item.setCheckState(0) # 初始状态为未选中
self.table_widget.setItem(row, 0, check_box_item)
# 按钮布局
button_layout = QHBoxLayout()
# 创建按钮
self.select_all_button = QPushButton("全选")
self.select_none_button = QPushButton("全不选")
self.get_version_button = QPushButton("获取版本")
self.get_mac_button = QPushButton("获取MAC")
self.upgrade_button = QPushButton("升级节点")
self.load_ips_button = QPushButton("加载IP列表")
self.load_all_button = QPushButton("加载完整信息列表")
self.save_button = QPushButton("保存表数据")
# 按钮连接
self.select_all_button.clicked.connect(self.select_all)
self.select_none_button.clicked.connect(self.select_none)
self.get_version_button.clicked.connect(self.get_version)
self.get_mac_button.clicked.connect(self.get_mac)
self.upgrade_button.clicked.connect(self.upgrade_node)
self.save_button.clicked.connect(self.save_data)
self.load_ips_button.clicked.connect(self.load_ips)
self.load_all_button.clicked.connect(self.load_all_info)
# 将按钮加入布局
button_layout.addWidget(self.select_all_button)
button_layout.addWidget(self.select_none_button)
button_layout.addWidget(self.get_version_button)
button_layout.addWidget(self.get_mac_button)
button_layout.addWidget(self.upgrade_button)
button_layout.addWidget(self.load_ips_button)
button_layout.addWidget(self.load_all_button)
button_layout.addWidget(self.save_button)
# 将表格和按钮布局添加到主布局
main_layout.addWidget(self.table_widget)
main_layout.addLayout(button_layout)
# 设置对话框的布局
self.setLayout(main_layout)
def select_all(self):
for row in range(self.table_widget.rowCount()):
item = self.table_widget.item(row, 0)
item.setCheckState(2) # 选中
def select_none(self):
for row in range(self.table_widget.rowCount()):
item = self.table_widget.item(row, 0)
item.setCheckState(0) # 未选中
def get_version(self):
print("获取版本按钮被点击")
def get_mac(self):
print("获取MAC按钮被点击")
def upgrade_node(self):
print("升级节点按钮被点击")
def save_data(self):
print("保存表数据按钮被点击")
# 可以在这里实现保存表格数据的操作比如导出为CSV等
def load_ips(self):
print("load ip list")
def load_all_info(self):
print("load complete info")
if __name__ == "__main__":
app = QApplication(sys.argv)
dialog = BatchOperationDialog()
dialog.show()
sys.exit(app.exec_())