我使用的是PyQt4和Python 2.7。最初我有一个QGridLayout布局了两个表小部件,还有一些misc。东西。
self.table_left = QtGui.QTableWidget(self)
self.table_right = QtGui.QTableWidget(self)
self.label_desired = QtGui.QLabel(self)
self.line = QtGui.QLineEdit(self)
self.label_current = QtGui.QLabel(self)
self.grid = QtGui.QGridLayout(self)
self.grid.addWidget(self.table_left, 0, 0, 20, 1)
self.grid.addWidget(self.table_right, 0, 1, 20, 1)
self.grid.addWidget(self.label_desired, 0, 2, 1, 3)
self.grid.addWidget(self.line, 1, 2, 1, 3)
self.grid.addWidget(self.label_current, 2, 2, 1, 3)
但是现在我想使用for循环来生成这些表和GridLayout,并将它们添加到tabwidget中,
for k, value in enumerate(self.form_no):
self.grid[k] = QtGui.QGridLayout(self)
self.grid[k].addWidget(self.table_left[k], 0, 0, 20, 1)
self.grid[k].addWidget(self.table_right[k], 0, 1, 20, 1)
self.grid[k].addWidget(self.label_desired[k], 0, 2, 1, 3)
self.grid[k].addWidget(self.line[k], 1, 2, 1, 3)
self.grid[k].addWidget(self.label_current[k], 2, 2, 1, 3)
self.tabwidget.addTab(self.grid[k], str(value))
当我尝试这个时,我遇到了类型错误。我环顾四周,找不到像GridWidget那样的东西。如何解决此错误以将GridLayouts添加到选项卡小部件?
TypeError: arguments did not match any overloaded call:
QTabWidget.addTab(QWidget, QString): argument 1 has unexpected type 'QGridLayout'
QTabWidget.addTab(QWidget, QIcon, QString): argument 1 has unexpected type 'QGridLayout'
答案 0 :(得分:1)
在标签中添加QWidget
,而不是添加QLayout
:self.tabwidget.addTab(widget)
。然后将self.grid[k]
设置为此窗口小部件的布局:widget.setLayout(self.grid[k])
。
widget = QtGui.QWidget()
widget.setLayout(self.grid[k])
tabwidget.addTab(widget, str(value))