簡體   English   中英

在qlayout pyqt4 python中刪除項目時出錯

[英]error in removing item in qlayout pyqt4 python

self.ui.verticalLayout.addWidget(MainWindow(self))正在工作,但是嘗試刪除窗口小部件時出現錯誤。

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類。

-編輯

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_())

QTEST.table設置為MyWindow類,而不是實例。 您需要添加括號: self.table = MyWindow()

作為參考, PyQt4.QtCore.pyqtWrapperType是所有PyQt4類的基本類型,因此,如果看到此錯誤,通常意味着您正在使用類而不是實例進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM