باي كيوت: لماذا إضافة تعريف فئة وهمية في ملفي جعل تطبيق الحادث؟
سؤال
والنظر في التعليمات البرمجية أدناه:
#!/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 () لديه نوع غير صالح
اقتباس فقرة>ورسالة الخطأ هذه خفي بالنسبة لي وأنا لا يمكن توصيله إلى تعديل القيام به. هل لديك فكرة عما يمكن أن يكون مصدر هذا الخطأ؟
المحلول
لا يمكن إعادة إنشاء المشكلة كما ذكرت: رمز المحدد التالي
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_())
ويعمل على ما يرام بالنسبة لي (لإظهار نافذة فارغة طبعا). لذا أعتقد أنه من أسفل إلى تفاصيل الإصدارات! أنا باستخدام بيثون الموفر من قبل النظام 2.5.1 على نظام التشغيل Mac OS X 10.5.7 وإضافة
print QtCore.PYQT_VERSION_STR
ويظهر أنا على النسخة 4.5.1 من باي كيوت. ماذا عنك؟
نصائح أخرى
وأنا لم تعمل مع باي كيوت قبل، ولكن لم كنت قد نسيت لاستدعاء منشئ الفائقة هنا؟
class MyWidget(QtGui.QWidget):
def __init__(self):
# Where is the call to QtGui.QWidget's init ?
pass