考虑下面的代码:

 #!/usr/bin/env python


from PyQt4 import QtCore, QtGui

import os,sys

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)  
        self.listWidget = QtGui.QListWidget(None)
        self.setCentralWidget(self.listWidget) 

if __name__ == '__main__':
    app = QtGui.QApplication (sys.argv)
    mainWin = MainWindow ()
    mainWin.show ()
    sys.exit (app.exec_())

工程确定。 现在,如果我添加一个虚拟类(即从QtGui模块的类继承)在全球范围内...

class MainWindow(QtGui.QMainWindow):
... # unchanged

class MyWidget(QtGui.QWidget):
   def __init__(self):
        super(MyWidget, self).__init__()

if __name__ == '__main__':
... # unchanged

...当我启动脚本中,我得到的错误:

  

类型错误:的参数1   QMainWindow.setCentralWidget()具有一个   无效的类型

此错误消息是隐蔽我作为我不能把它连接到完成的修改。 你有一个想法,这可能是这个错误的根源?

有帮助吗?

解决方案

不能再现作为报告的问题:下面的确切的代码

from PyQt4 import QtCore, QtGui

import os, sys

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)  
        self.listWidget = QtGui.QListWidget(None)
        self.setCentralWidget(self.listWidget) 

class MyWidget(QtGui.QWidget):
   def __init__(self):
        super(MyWidget, self).__init__()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

运行得很好,我(表示过程的空白窗口)。所以我想这是下降到版本的详细信息!我使用Mac OS X上10.5.7系统提供的Python 2.5.1并添加

print QtCore.PYQT_VERSION_STR

示出了我在PyQt的4.5.1版本。你怎么样?

其他提示

我还没有和PyQt的工作过,但没有你忘记打电话给这里的父类的构造函数?

class MyWidget(QtGui.QWidget):
   def __init__(self):
      # Where is the call to QtGui.QWidget's init ?
      pass
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top