هل هناك إمكانية لتحويل QVariants تلقائيًا إلى كائنات Python؟
سؤال
Pyqt 4.5.4 ، Python 2.6.2
منذ الإصدار 4.5.2 PYQT قادر على قبول أي كائنات بيثون حيث كان سابقًا فقط QVariants
سمح. هذا يؤدي إلى بعض المشاكل:
>>> itemModel.data(index, Qt.EditRole)
<Product object at 0xb7ce766c>
>>> index.data(Qt.EditRole)
<QVariant object at 0xb7ce768c>
هل هناك إمكانية لإزالة هذا التناقض؟
المحلول
Pyqt 4.6 ، باستخدام واجهة برمجة التطبيقات الحديثة:
ال
QVariant
يتم تنفيذ الفصل كنوع معين. يمكن تمرير أي كائن بيثون عندماQVariant
من المتوقع أن يكون مثال. عندما يعيد QT أQVariant
ثم سيتم تحويله تلقائيًا إلى كائن Python الأصلي أو ما يعادله.None
يتم تفسيره على أنه غير صالحQVariant
والعكس صحيح.
نصائح أخرى
يمكنك استخدام طريقة .topyobject () على QVariant. أشك في أن هذا يعمل للأنواع المخصصة.
الحل الوحيد الذي وجدته هو تحويل كل قيمة إلى Qvariant ثم العودة:
QVariant(possiblyAQVariant).toPyObject()
هذا يعمل مع Qvariants وأنواع بيثون.
لا تنتمي إلى StackOverflow