باي كيوت: لماذا إضافة تعريف فئة وهمية في ملفي جعل تطبيق الحادث؟

StackOverflow https://stackoverflow.com/questions/1233711

  •  22-07-2019
  •  | 
  •  

سؤال

والنظر في التعليمات البرمجية أدناه:

 #!/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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top