2017-02-03 25 views
1

私はPyQtを通して画面に配列を表示しようとしています。 Qt DesignerでtableViewという名前のオブジェクトを作成して表示したいと思います。これはQTableViewです。QLayoutエラーを追加するPyQt

このコードを実行しようとすると、

tablemodel = MyTableModel(my_array, self) 
tableview = QTableView() 
tableview.setModel(tablemodel) 

layout = QVBoxLayout(self) 
layout.addWidget(tableview) 
self.setLayout(layout) 

私は次のエラーを取得します。

QLayout: Attempting to add QLayout "" to MyWindow "MainWindow", which already has a layout 
QWidget::setLayout: Attempting to set QLayout "" on MyWindow "MainWindow", which already has a layout 

my_arrayを表示するには、この問題に関するすべてのヘルプははるかに高く評価されるだろう!ありがとう!

+0

「self」のタイプは何ですか? – quasoft

答えて

0

QMainWindowクラスはその中で最も他のウィジェットに異なっている、それが内蔵されており、それはメニューバー、ツールバー、ステータスバーとドックのウィジェットをレイアウトするために使用したレイアウト、:

QMainWindow Layout

あなたが見ることができるように、それはまた、独自のコンテンツを配置する必要がある場所である中央のウィジェットのためのスペースを残します。したがって、コードは次のようになります。

tablemodel = MyTableModel(my_array, self) 
tableview = QTableView() 
tableview.setModel(tablemodel) 

widget = QWidget() 
layout = QVBoxLayout(widget) 
layout.addWidget(tableview) 
self.setCentralWidget(widget) 
0

これを試してみてください:

layout = QVBoxLayout() 
layout.addWidget(tableview) 

layout2 = QVBoxLayout(self) 
layout2.addLayout(layout) 
+0

これにより、エラーの2行目は削除されますが、最初の行は削除されます。まだ画面に出力されません。 –

+0

レイアウトに表示するにはtableview.show()を追加する必要があります – DerFaizio

関連する問題