0

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

1 回答 1

1

QTEST.table设置为MyWindow类,而不是实例。您需要添加括号:self.table = MyWindow()

作为参考,PyQt4.QtCore.pyqtWrapperType它是所有 PyQt4 类的基本类型,因此如果您看到此错误,通常意味着您正在使用类而不是实例进行操作。

于 2012-04-25T06:57:42.403 回答