2012-04-25 12 views
0

self.ui.verticalLayout.addWidget(MainWindow(self))が動作していますが、ウィジェットを削除しようとするとエラーが発生します。qlayout pyqt4 pythonのアイテムを削除する際にエラーが発生しました

はTypeError:QLayout.removeWidget(QWidgetの):引数1は、予期しない型 'PyQt4.QtCore.pyqtWrapperType' ここ

されているサンプルコードがあります。

を私はウィジェットを作成するには、この独立した.pyファイルを持っていますqtableview

class MyWindow(QWidget): 
    pcobject =[] 
    def __init__(self, *args): 
     QWidget.__init__(self, *args) 
     layout = QVBoxLayout(self) 
     self.tableview = QTableView() 
     layout.addWidget(self.tableview) 
........ 

さらに、垂直レイアウトの.pyを使用して、MyWindowクラスを追加します。

-Edited

from tableview import MyWindow 

class QTEST(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.table = MyWindow 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

     self.ui.verticalLayout.addWidget(self.table)) 
     self.ui.gridLayout.addLayout(self.ui.verticalLayout, 1, 0, 1, 1) 
     self.connect(self.ui.pushButton_15, QtCore.SIGNAL("clicked()"), self.table_view) 

    def table_view(self): 

     #import sip 

     self.ui.verticalLayout.removeItem(self.table) 

     #self.table.setParent(None) 
     #sip.delete(self.table) 
     #self.table = None 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    myapp = QTEST() 
    myapp.show() 
    sys.exit(app.exec_()) 
+0

このコードは正しいですか?あなたは 'self.table'を' verticalLayout'に追加しませんでした。なぜあなたはそれを削除しようとしていますか?ちなみに、それは 'self.table = MyWindow()'でなければなりません。クラスをインスタンス化していません。 – Avaris

+0

申し訳ありません私は自分のコードを編集しました。あなたのコードを試しましたself.table = MyWindow()しかし、私はaddwidgetでエラーが発生しました。 TypeError:QBoxLayout.addWidget(QWidget、int stretch = 0、Qt.Alignment alignment = 0):引数1に予期しない型があります。 'PyQt4.QtCore.pyqtWrapperType' – unice

+1

他のことを試しました。 'self.table'を初期化する行を見てください。あなたは括弧を忘れました。 'MyWindow'だけでなく' MyWindow() 'でなければなりません。 – Avaris

答えて

1

QTEST.tableMyWindowクラスではなくインスタンスに設定されています。あなたは括弧を追加する必要があります。参考のためにself.table = MyWindow()

を、PyQt4.QtCore.pyqtWrapperTypeはすべてPyQt4クラスの基本型であるため、このエラーが表示された場合、それは通常、あなたの代わりに、インスタンスのクラスで何かをやっている意味します。

関連する問題