将复选框动态插入到 tabWidget 中
Dynamically insert checkboxes into a tabWidget
我正在使用 pyQt5 构建一个小型应用程序。到目前为止,我已经使用 QtCreator 构建了一个 UI,使用 pyuic 将其转换为 Python 文件,现在按下一个按钮,它应该使用带有从字符串列表。我似乎想不出解决这个问题的最佳方法。
到目前为止,我已经完成了以下操作。
- Link UI 文件和我的主要 python 代码。
- 处理按钮单击以调用插入复选框的函数。
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[]
.
好吧,对于任何偶然发现这个的人。我按照下面的描述进行了处理。
- 创建布局以容纳内部元素
- 将 QWidget 动态插入此布局
- 最后把你需要的tab/widget布局设置成上面的样子。
一个小例子是[从上面延伸]
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)
我正在使用 pyQt5 构建一个小型应用程序。到目前为止,我已经使用 QtCreator 构建了一个 UI,使用 pyuic 将其转换为 Python 文件,现在按下一个按钮,它应该使用带有从字符串列表。我似乎想不出解决这个问题的最佳方法。
到目前为止,我已经完成了以下操作。
- Link UI 文件和我的主要 python 代码。
- 处理按钮单击以调用插入复选框的函数。
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[]
.
好吧,对于任何偶然发现这个的人。我按照下面的描述进行了处理。
- 创建布局以容纳内部元素
- 将 QWidget 动态插入此布局
- 最后把你需要的tab/widget布局设置成上面的样子。
一个小例子是[从上面延伸]
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)