Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态创建选项卡QTabWidget和填充表QTableWidget_Python_Qt Designer_Qtablewidget_Qtabwidget - Fatal编程技术网

Python 动态创建选项卡QTabWidget和填充表QTableWidget

Python 动态创建选项卡QTabWidget和填充表QTableWidget,python,qt-designer,qtablewidget,qtabwidget,Python,Qt Designer,Qtablewidget,Qtabwidget,我正在使用QtDesigner,我有一个QTabWidget,在每个选项卡中我有一个QTableWidget,使用gridLayout使表完全适合选项卡 我正在填写第一个选项卡/表格,如下所示: self.ui.tableWidget.setColumnCount(ncols) self.ui.tableWidget.setRowCount(nrows) myrows = [row.fetch_all_fields() for row in tab] for i, row in enumera

我正在使用QtDesigner,我有一个QTabWidget,在每个选项卡中我有一个QTableWidget,使用gridLayout使表完全适合选项卡

我正在填写第一个选项卡/表格,如下所示:

self.ui.tableWidget.setColumnCount(ncols)
self.ui.tableWidget.setRowCount(nrows)

myrows = [row.fetch_all_fields() for row in tab]
for i, row in enumerate(myrows):
    for j, col in enumerate(row):
                item = QTableWidgetItem(str(col))
                self.ui.tableWidget.setItem(i, j, item)
                QApplication.instance().processEvents()
这工作得非常好,用户第一次按下按钮时,就会执行此代码,并填充第一个选项卡内的表格

但是,我们的想法是,每次用户按下按钮时,都会创建一个新的选项卡/表格,并填充请求的数据,问题是,正如许多人可能已经猜到的,它第一次工作,但在第一次之后,第二个选项卡包含第二个表格,不再称为
self.ui.tableWidget
,它被称为类似于,
self.ui.tableWidget_2
的东西,当然,代码不再工作了

所以问题是如何动态地做到这一点,我的意思是,每次按下一个按钮,都应该创建一个新的选项卡/表,并且每次都应该重复使用上面的代码来填充创建的新表


可能吗?如果您在Qt Designer中设置了所有内容,那么您的选项卡小部件将为每个选项卡提供一个小部件(页面),并且每个页面将包含一个表小部件

该方法可以通过索引访问每个选项卡的小部件(页面)。您可以使用获取页面包含的表格小部件:

    page = self.ui.tabWidget.widget(index)
    tablewidget = page.findChild(QTableWidget)

因此,这将允许您通过索引访问任何表小部件,而不必知道特定的属性名称。

谢谢!!,这正是我要找的,看起来很简单!!