动态地将复选框插入tabWidget

时间:2019-07-01 10:36:55

标签: python pyqt pyqt5 qtabwidget qcheckbox

我正在使用pyQt5构建一个小型应用程序。到目前为止,我已经使用QtCreator构建了一个UI,并使用pyuic将其转换为Python文件,现在只要按一下按钮,它就应该动态地使用带有从字符串列表中拉出标签的复选框来填充tabWidget的标签。我似乎无法找出解决此问题的最佳方法。

到目前为止,我已经完成了以下操作。

  1. 将UI文件与我的主要python代码链接。
  2. 处理按钮单击以调用要插入复选框的函数。
class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.auth_select.clicked.connect(self.handle_auth)
        self.show()
    def populate_tabs(self):
        self.tabWidget.addWidget(QtWidgets.QCheckBox())

我似乎无法弄清楚如何动态地将复选框插入特定选项卡。假设我的标签页名称为main_tab;我想插入5个复选框,它们的标签和ID来自2个列表labels[]ids[]

1 个答案:

答案 0 :(得分:0)

好吧,对于那些偶然发现此问题的人。我按照以下说明进行操作。

  1. 创建一个布局以容纳内部元素
  2. 动态地将QWidgets插入此布局
  3. 最后将所需的标签/小部件的布局设置为上面的

一个小例子是[从上面扩展]

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.auth_select.clicked.connect(self.handle_auth)
        self.show()
        self.populate_tabs(connection_string)
    def populate_tabs(self, connection_string):
        layout = QGridLayout()
        for i in range(1, 5):
            for j in range(1, 10):  
                layout.addWidget(QCheckBox("Check #{}".format(i)) , i, j)

        self.tabWidget.widget(2).setLayout(layout)