请考虑以下代码:
#!/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
...当我启动脚本时,我收到错误:
TypeError:参数1 QMainWindow.setCentralWidget()有一个 无效的类型
此错误消息对我来说很神秘,因为我无法将其连接到已完成的修改。 你知道这个错误的根源是什么吗?
答案 0 :(得分:1)
无法重现报告的问题:以下确切代码
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版本。你呢?
答案 1 :(得分:0)
我之前没有使用过PyQt,但是你不忘记在这里调用超类的构造函数吗?
class MyWidget(QtGui.QWidget):
def __init__(self):
# Where is the call to QtGui.QWidget's init ?
pass