首先,我们需要在Qt Designer中创建一个窗口,然后添加以下控件:
1. QCheckBox:用于启用/禁用A表格和生成按钮。
2. QLineEdit:用于输入行数。
3. QTableWidget:作为A表格,设置列数为3,并禁用状态。
4. QPushButton:用于生成按钮。
5. 另外一个QTableWidget:作为B表格。
然后,您可以使用以下代码加载设计文件,并编写相应的逻辑:from PySide6.QtWidgets import QApplication, QMainWindowfrom PySide6.QtCore import Slotfrom ui_mainwindow import Ui_MainWindowclass MainWindow(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) # 初始时禁用A表格 self.tableWidget_A.setEnabled(False) # 连接信号槽 self.checkBox.stateChanged.connect(self.toggleTableAndButtons) self.pushButton_generate.clicked.connect(self.generateButtons) @Slot(int) def toggleTableAndButtons(self, state): if state == 0: # 禁用A表格 self.tableWidget_A.setEnabled(False) else: # 启用A表格 self.tableWidget_A.setEnabled(True) @Slot() def generateButtons(self): try: row_count = int(self.lineEdit.text()) except ValueError: return # 清空B表格的行数 self.tableWidget_B.setRowCount(0) # 根据行数生成按钮,并连接信号槽 for row in range(row_count): button = QPushButton(f"Button {row+1}") button.clicked.connect(lambda checked, r=row: self.setBTableRows(r)) self.verticalLayout_buttons.addWidget(button) @Slot(int) def setBTableRows(self, row): # 根据A表格的行内容设置B表格的行数 value = self.tableWidget_A.item(row, 0).text() try: row_count = int(value) except ValueError: return self.tableWidget_B.setRowCount(row_count)app = QApplication([])window = MainWindow()window.show()app.exec()
注意,在上面的代码中,我们使用了一个名为`ui_mainwindow.py`的特殊文件来将设计文件转化为可用的类。您需要使用`pyside6-uic`工具从设计文件生成该文件。使用以下命令:pyside6-uic mainwindow.ui -o ui_mainwindow.py
确保使用正确的文件名和路径。
希望这可以帮助您实现所需的功能!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |