لا يؤدي الفوضى إلى تحديث الشاشة خارج نقاط التوقف

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

سؤال

لدي بعض التعليمات البرمجية:

l1 = clutter.Label()
l1.set_position(100,100)
for i in range(0,10):
    l1.set_text(str(i))
    time.sleep(1)

تم تصميم ذلك لإظهار العد من 1 إلى 10 ثوانٍ على الشاشة في حالة الفوضى، لكنني أتلقى خطأً غريبًا.عندما أقوم بتشغيل البرنامج النصي بشكل طبيعي، تعمل الشاشة كما ينبغي، ولكن لا يتم عرض أي نص حتى مرور 10 ثوانٍ.ومع ذلك، عندما أقوم بتشغيل نقاط التوقف في ملف pdb، يظهر النص على ما يرام.

أحصل أيضًا على خطأ غريب في بداية البرنامج:

do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vlank_mode configuration parameter.

لكنني لا أرى سبب تأثير ذلك على الكود خارج نقاط التوقف ولكن ليس في نقاط التوقف.

أي مساعدة سيكون موضع تقدير كبير.

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

المحلول

لست متأكدًا مما إذا كنت قد اكتشفت الإجابة على هذا بالفعل ولكن:

سبب وجود هذه المشكلة هو أنك تقوم بحظر الموضوع الرئيسي (حيث يحدث كل الرسم) باستدعاءات time.sleep()، مما يمنع المكتبة من إعادة رسم الشاشة.

على سبيل المثالالكود الخاص بك يقوم حاليًا بهذا:

  1. الفوضى تعيد رسم الشاشة.
  2. تقوم بالتكرار لمدة عشر ثوانٍ وتغيير النص عشر مرات.
  3. الفوضى تعيد رسم الشاشة.

إذا كنت تريد وضع شيء ما في قائمة الانتظار على جهاز توقيت، فيجب عليك النظر فيه gobject.timeout_add.

نصائح أخرى

هل حاولت نشر (أو <وأ href = "HTTP: // lists.o-hand.com/clutter/ "يختلط =" نوفولو noreferrer "> البحث ) على الفوضى القائمة البريدية؟ هنا الصورة شخص حصلت على نفس الرسالة حول drmWaitVBlank على سبيل المثال.

وتخميني هو أن معظم الناس على SO لن يكون على دراية حل المشاكل الفوضى. وأنا أعلم أنني لست :)

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