鱼C论坛

 找回密码
 立即注册
查看: 2180|回复: 3

Qtdesigner自动设置按钮数量和位置

[复制链接]
发表于 2023-12-8 15:00:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Pyside6中,利用Qtdesigner设置这样一个功能界面。
Qcheckbox勾选框,如果没有被勾选,则激活一个指令,该指令激活一个平时处于不可用状态的QTableWidget(记为A表格),该QTableWidgett(A表格)的列数提前设置为3列,行数来自于通过收集一个QLineEdit的内容(只能是数字),根据数字去设置QTableWidget(A表格)的行数。并且根据该QLineEdit的数字内容自动生成对应数量的QPushButton按钮。点击QPushButton按钮后,可以根据QTableWidget(A表格)行的内容去设置另外一个QTableWidget(B表格)的行数。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-8 15:03:42 | 显示全部楼层
首先,我们需要在Qt Designer中创建一个窗口,然后添加以下控件:

1. QCheckBox:用于启用/禁用A表格和生成按钮。
2. QLineEdit:用于输入行数。
3. QTableWidget:作为A表格,设置列数为3,并禁用状态。
4. QPushButton:用于生成按钮。
5. 另外一个QTableWidget:作为B表格。

然后,您可以使用以下代码加载设计文件,并编写相应的逻辑:
  1. from PySide6.QtWidgets import QApplication, QMainWindow
  2. from PySide6.QtCore import Slot
  3. from ui_mainwindow import Ui_MainWindow
  4. class MainWindow(QMainWindow, Ui_MainWindow):
  5.     def __init__(self):
  6.         super().__init__()
  7.         self.setupUi(self)
  8.         
  9.         # 初始时禁用A表格
  10.         self.tableWidget_A.setEnabled(False)
  11.         
  12.         # 连接信号槽
  13.         self.checkBox.stateChanged.connect(self.toggleTableAndButtons)
  14.         self.pushButton_generate.clicked.connect(self.generateButtons)
  15.    
  16.     @Slot(int)
  17.     def toggleTableAndButtons(self, state):
  18.         if state == 0:
  19.             # 禁用A表格
  20.             self.tableWidget_A.setEnabled(False)
  21.         else:
  22.             # 启用A表格
  23.             self.tableWidget_A.setEnabled(True)
  24.    
  25.     @Slot()
  26.     def generateButtons(self):
  27.         try:
  28.             row_count = int(self.lineEdit.text())
  29.         except ValueError:
  30.             return
  31.         
  32.         # 清空B表格的行数
  33.         self.tableWidget_B.setRowCount(0)
  34.         
  35.         # 根据行数生成按钮,并连接信号槽
  36.         for row in range(row_count):
  37.             button = QPushButton(f"Button {row+1}")
  38.             button.clicked.connect(lambda checked, r=row: self.setBTableRows(r))
  39.             self.verticalLayout_buttons.addWidget(button)
  40.    
  41.     @Slot(int)
  42.     def setBTableRows(self, row):
  43.         # 根据A表格的行内容设置B表格的行数
  44.         value = self.tableWidget_A.item(row, 0).text()
  45.         try:
  46.             row_count = int(value)
  47.         except ValueError:
  48.             return
  49.         
  50.         self.tableWidget_B.setRowCount(row_count)
  51. app = QApplication([])
  52. window = MainWindow()
  53. window.show()
  54. app.exec()
复制代码

注意,在上面的代码中,我们使用了一个名为`ui_mainwindow.py`的特殊文件来将设计文件转化为可用的类。您需要使用`pyside6-uic`工具从设计文件生成该文件。使用以下命令:
  1. pyside6-uic mainwindow.ui -o ui_mainwindow.py
复制代码

确保使用正确的文件名和路径。

希望这可以帮助您实现所需的功能!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-8 15:15:45 | 显示全部楼层
FishC 发表于 2023-12-8 15:03
首先,我们需要在Qt Designer中创建一个窗口,然后添加以下控件:

1. QCheckBox:用于启用/禁用A表格和生成 ...

注意,在上面的代码中,我们使用了一个名为`ui_mainwindow.py`的特殊文件来将设计文件转化为可用的类。您需要使用`pyside6-uic`工具从设计文件生成该文件。使用以下命令:
  1. pyside6-uic mainwindow.ui -o ui_mainwindow.py
复制代码


请问具体是什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-8 15:16:37 | 显示全部楼层
子飞鱼 发表于 2023-12-08 15:15
注意,在上面的代码中,我们使用了一个名为`ui_mainwi ...

非常抱歉,我在之前的回答中给出了一些模糊的解释。让我更明确地解释一下:

在Qt Designer中创建的界面设计文件(通常是以.ui为扩展名的文件)不能直接用于Pyside6编程。需要使用`pyside6-uic`工具将设计文件转换为可用于编程的Python代码。

下面是具体的步骤:

1. 打开命令行终端(在Windows上可以使用CMD或PowerShell,而在Mac或Linux上可以使用终端)。
2. 导航到保存了您的设计文件的目录。

3. 运行以下命令:
  1. pyside6-uic mainwindow.ui -o ui_mainwindow.py
复制代码

其中,`mainwindow.ui`是您设计的界面文件的名称,`ui_mainwindow.py`是要生成的Python代码文件的名称和路径。请确保这两个文件名与您自己的实际情况相匹配。

运行此命令后,它将读取`mainwindow.ui`文件,并将其转换为一个名为`ui_mainwindow.py`的Python代码文件。这个Python文件中包含了与您在Qt Designer中设计的界面相对应的类和方法。

接下来,在您的主程序中,您需要使用`import`语句导入生成的`ui_mainwindow.py`文件,这样您就可以使用其中定义的类和方法来创建并操作界面了。

希望这次解释更加清晰明了,如果您还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-24 04:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表