خلق المرسل الحدث مدخلات جديدة في Pyglet (الأشعة تحت الحمراء المدخلات)

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

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا مؤخرا طرحت هذا السؤال في مجموعة المستخدمين pyglet، ولكن حصلت استجابة، لذلك أحاول هنا بدلا من ذلك.

وأود أن أتقدم Pyglet لتكون قادرة على استخدام جهاز إدخال الأشعة تحت الحمراء التي تدعمها LIRC. لقد استعملت pyLirc قبل ( http://pylirc.mccabe.nu/ ) مع PyGame وأريد لإعادة كتابة طلبي لاستخدام Pyglet بدلا من ذلك.

لمعرفة ما إذا تم الضغط على زر كنت استطلاع عادة pyLirc لمعرفة ما إذا كان هناك أي تضغط على زر في قائمة الانتظار.

وسؤالي هو، ما هي الطريقة الصحيحة في Pyglet لدمج pyLirc؟

وأود أن تفضل اذا كان يعمل في نفس كانت على النحو أحداث لوحة المفاتيح نافذة / الماوس الحالية، لكنني لست متأكدا من أين تبدأ.

وأنا أعلم أنني يمكن أن تخلق EventDispatcher الجديد، الذي يمكنني تسجيل أنواع جديدة من الأحداث وإرسالهم بعد الاقتراع، كما يلي:

class pyLircDispatcher(pyglet.event.EventDispatcher):
    def poll(self):
        codes = pylirc.nextcode()
        if codes is not None:
            for code in codes:
                self.dispatch_event('on_irbutton', code)

    def on_irbutton(self, code):
        pass

ولكن كيف يمكنني دمج ذلك في حلقة رئيسية التطبيق للحفاظ على الدعوة استطلاع () إذا كنت تستخدم pyglet.app.run () وكيف أرفق هذا eventdispatcher إلى نافذتي بحيث أنه يعمل نفس الماوس و المرسلون لوحة المفاتيح؟

وأرى أنني يمكن إعداد جدولة للاتصال استطلاع () على فترات منتظمة مع pyglet.clock.schedule_interval، ولكن هل هذا هو الطريق الصحيح للقيام بذلك؟

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

المحلول

وانها على الارجح في وقت متأخر جدا بالنسبة للOP، ولكنني سوف الرد على أي حال في حال فإنه من المفيد أن أي شخص آخر.

وإنشاء المرسل الحدث واستخدام pyglet.clock.schedule_interval للاتصال استطلاع () على فترات منتظمة هو وسيلة جيدة للقيام بذلك.

لإرفاق المرسل الحدث إلى إطار الخاص بك، فإنك تحتاج إلى إنشاء مثيل من المرسل ومن ثم استدعاء لها <لأ href = "http://www.pyglet.org/doc/api/pyglet.event.EventDispatcher- class.html # push_handlers "يختلط =" نوفولو noreferrer "> push_handlers الأسلوب:

dispatcher.push_handlers(window)

وبعد ذلك يمكنك التعامل مع الأحداث تماما مثل أي غيرها من الأحداث القادمة في إطار.

نصائح أخرى

والطريقة الصحيحة هي ما يعمل. يمكنك دائما تغيير في وقت لاحق إذا وجدت طريقة أفضل.

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