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_())