2016-12-30 21 views
0

私はPyQt4とPython 2.7を使用しています。最初はQGridLayoutに2つのテーブルウィジェットとその他のものが配置されていました。もの。PyQt4 - 複数のグリッドレイアウトをタブウィジェットに追加する

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' 

答えて

1

タブにQWidgetを追加代わりにQLayout追加:self.tabwidget.addTab(widget)を。次に、self.grid[k]をこのウィジェットのレイアウトに設定します:widget.setLayout(self.grid[k])。 'QTabWidget':私はself.tabWidgetが.addWidget `self.tabwidget.addWidget(self.table_widget [k]は、STR(値)) はAttributeErrorを持っていないことを言ってエラーが出る

widget = QtGui.QWidget() 
widget.setLayout(self.grid[k]) 
tabwidget.addTab(widget, str(value)) 
+0

オブジェクトに属性 'addWidget'がありません – SharpObject

+0

申し訳ありませんaddTab:固定の答えです。 – Schollii

関連する問題