الحصول على أخطاء "توقيع إشارة غير صالحة" في PySide QWebPage

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

سؤال

إنني أقوم بإنشاء تطبيق يقوم تلقائيًا بتحميل صفحات الويب وإنشاء لقطات شاشة (لا ، لا يمكنني استخدام أحد الحلول الحالية) باستخدام PySide. يحصل جزء واحد من التطبيق على قائمة بعناوين URL ويقوم بتحميل كل عنوان URL بدوره باستخدام كائن جديد QWebPage. بعد تحميل الصفحة ، يتم التقاط لقطة شاشة ويتم حذف كائن QWebPage.

بين الحين والآخر ، بالنظر إلى عدد مرات التشغيل الكافية ، أتلقى الخطأ التالي من PySide ، كاستثناء RuntimeError:

Genacodicetagpre

تتم طباعة السطر الأول على STDERR (ربما بواسطة Qt؟) والسطر الثاني هو استثناء Python.

loadStarted () عبارة عن إشارة QWebPage مضمنة ، وليست شيئًا من إنشائي. يعمل هذا بنسبة 90٪ من الوقت ، ولم أستطع معرفة ما الذي يجعله يفشل أحيانًا.

لكي أكون صادقًا ، هذا التطبيق غير معتاد تمامًا في التصميم ، حيث يربط PySide / Qt بتطبيق ويب مقدم من uWSGI - وهذا يعني على سبيل المثال أنني لا أستخدم حلقة حدث QApplication بل حلقة حدث محلية لكل صفحة حمل. أنا أيضًا لست من ذوي الخبرة في أي من Qt أو Python ، لذلك من المحتمل أنني أرتكب الكثير من الأخطاء ، لكن لا يمكنني معرفة ما هي هذه الأخطاء.

أعتقد أن هذه المشاركة قد يكون لها علاقة بها ، لكنني غير متأكد.

هل لديك أي اقتراحات بشأن المكان الذي تبحث فيه بعد ذلك؟

تحديث: الإشارة متصلة من خلال الرمز التالي: Genacodicetagpre

يتم إنشاء كائنات MyWebPage كأطفال لمثيل QObject واحد مختلف لا يتم حذفه حتى يتم إيقاف العملية. يتم حذفها عن طريق استدعاء page.deleteLater () بمجرد الانتهاء منها. نظرًا لأنني أقوم بتشغيل حلقة حدث محلي ، فأنا أقوم بتشغيل عمليات الحذف المؤجلة بعد الخروج من حلقة الحدث المحلي من خلال استدعاء: Genacodicetagpre

هل كانت مفيدة؟

المحلول 2

لمعرفة قيمتها ، تم حل هذه المشكلة وغيرها أخيرًا بطريقة لائقة بعد أن قمت بالترقية إلى PySide 1.2.1.

نصائح أخرى

كنت أواجه نفس المشكلة (كنت أتلقى هذه الأخطاء من حين لآخر ، لكن لم أستطع تكرارها باستمرار). أعتقد أنك قد تكون على حق في أن الأمر يتعلق بأساليب غير موجودة عندما تحاول توصيل الإشارات بها - فقط لاختبار ذلك ، أضع مكالمات .connect في طريقة منفصلة ، واختفت الأخطاء . على سبيل المثال:

تعديل: (بعد بضع ساعات) أعتقد أنني تحدثت في وقت مبكر جدًا - لقد حصلت على الخطأ مرة أخرى.

تحديث: (بعد بضعة أسابيع)

لقد لعبت مع بناء الجملة كثيرًا وأحيانًا حصلت على خطأ في وقت التشغيل (ربما هذا الخطأ في PySide؟). ما زلت غير متأكد تمامًا من السبب ، ولكن نظرًا لأن الخطأ يحدث بشكل غير متسق ، فمن المحتمل أنك آمن في فرضه على النحو التالي: Genacodicetagpre

إذا كنت تريد حقًا أن تكون آمنًا ، فربما يمكنك الاحتفاظ بعداد حلقي وتعطل البرنامج فقط إذا لم تتصل الإشارة بشكل صحيح قبل بعض العتبة.

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