2012-04-25 24 views
0

的self.ui.verticalLayout.addWidget(主窗口(个体经营))去除项工作,但试图删除插件时,我收到一个错误。错误在qlayout PyQt4的蟒蛇

类型错误: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 2012-04-25 03:32:54

+0

对不起,我已经编辑我的代码。我试过你的代码self.table = mywindow的(),但我在addwidget得到一个错误。 TypeError:QBoxLayout.addWidget(QWidget,int stretch = 0,Qt.Alignment alignment = 0):参数1有意外的类型'PyQt4.QtCore.pyqtWrapperType' – unice 2012-04-25 04:12:53

+1

嗯,你试过其他的东西。看看你初始化'self.table'的行。你忘了括号。它应该是'MyWindow()'而不仅仅是'MyWindow'。 – Avaris 2012-04-25 04:47:44

回答

1

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

作为参考,PyQt4.QtCore.pyqtWrapperType是所有PyQt4类的基类型,所以如果你看到这个错误,它通常意味着你正在做一些类而不是实例。