باستخدام المواضيع وpyGST في التطبيق WX الثعبان

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

  •  03-07-2019
  •  | 
  •  

سؤال

وOK، حتى وأنا أكتب التطبيق، والتي تلعب الموسيقى مع الارتباطات pyGST.

وهذا يتطلب استخدام المواضيع للتعامل مع التشغيل. مكتبة الارتباطات يعالج معظم السيطرة موضوع بالنسبة لي، وهو لطيف (وما كنت أبحث عنه في منهم).

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

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

gtk.gdk.threads_init()  
gtk.main()

وفقا ل هنا ، وهذا يروي التطبيق فإنه يمكن استخدام المواضيع متعددة (أكثر أو أقل)، والذي هو المكان الذي جاء بلدي الافتراض أعلاه من.

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

<القوي> هل هناك ما يعادل WX على ذلك؟ أو هو موافق لاستخدام هذا، وسوف لا تزال تعمل عبر منصة؟

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

وPS: أعتقد أن هذا (أو الحل) قد تكون ذات صلة وظيفة wx.App.MainLoop ()، لكنني فقدت في محاولة لفهم كيفية عمل هذه الحلقة، لذلك مرة أخرى، سيكون موضع تقدير إشارات جيدة حول هذا ، ولكن أعتقد ليس من الضروري طالما لدي حل جيد.

نصائح أخرى

وليست لدي خبرة مع pyGST، ولكن النصيحة العامة لاستخدام المواضيع وكسبيثون هو تحديث فقط واجهة المستخدم الرسومية من الخيط الرئيسي (أي الخيط الذي يبدأ MainLoop). انظر http://wiki.wxpython.org/LongRunningTasks للحصول على مزيد من المعلومات.

وليست لدي خبرة مع الارتباطات الثعبان، ولكن لقد كان نجاح استخدام كويدغيتس وجيستريمر معا على ويندوز. والمشكلة هي أن كويدغيتس يدير حلقة أحداث Windows بينما يستخدم جيستريمر حلقة الحدث الخصلة. إذا كنت لا تبالي أي من الأحداث جيستريمر، يجب أن لا حاجة للقيام بأي شيء. ومع ذلك، إذا كنت تهتم لتلقي أي من الأحداث جيستريمر، سيكون لديك لتشغيل الخاصة الخصلة حلقة هذا الحدث الخاص بك (GMainLoop) في موضوع مستقل مع GMainContext منفصلة. استخدام gst_bus_create_watch لإنشاء مصدر الحدث GST، إضافة الاستدعاء إلى مصدر g_source_set_callback، ومن ثم إرفاقه سياق الرئيسي الخاص بك حلقة الحدث الخصلة مع g_source_attach. يمكنك بعد ذلك التعامل مع GST في رد، على سبيل المثال، لإعادة توجيه الأحداث إلى WX حلقة الحدث الرئيسي.

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