From deabca2aa8799c04f7c1fe98de1ca1aba71a6786 Mon Sep 17 00:00:00 2001 From: pandx Date: Wed, 25 Jun 2025 10:58:59 +0800 Subject: [PATCH] add batch operation file --- batch_dialog.py | 112 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 batch_dialog.py diff --git a/batch_dialog.py b/batch_dialog.py new file mode 100644 index 0000000..7114fef --- /dev/null +++ b/batch_dialog.py @@ -0,0 +1,112 @@ +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_())