هل هناك إمكانية لتحويل QVariants تلقائيًا إلى كائنات Python؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

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 وأنواع بيثون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top