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_())
このコードは正しいですか?あなたは 'self.table'を' verticalLayout'に追加しませんでした。なぜあなたはそれを削除しようとしていますか?ちなみに、それは 'self.table = MyWindow()'でなければなりません。クラスをインスタンス化していません。 – Avaris
申し訳ありません私は自分のコードを編集しました。あなたのコードを試しましたself.table = MyWindow()しかし、私はaddwidgetでエラーが発生しました。 TypeError:QBoxLayout.addWidget(QWidget、int stretch = 0、Qt.Alignment alignment = 0):引数1に予期しない型があります。 'PyQt4.QtCore.pyqtWrapperType' – unice
他のことを試しました。 'self.table'を初期化する行を見てください。あなたは括弧を忘れました。 'MyWindow'だけでなく' MyWindow() 'でなければなりません。 – Avaris