سؤال

وكيف استدعاء event tkinter من كائن منفصل؟

وأنا أبحث عن شيء من هذا القبيل كويدغيتس wx.CallAfter. على سبيل المثال، إذا كنت إنشاء كائن، ويمر بها بلدي المثال Tk الجذر، ومن ثم محاولة استدعاء أسلوب من تلك النافذة الجذر من وجوه بلدي، أقفال التطبيق حتى.

وأفضل ما يمكن أن تصل لاستخدام أسلوب after والتحقق من حالة من وجهة نظري كائن منفصل، ولكن يبدو أن الإسراف.

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

المحلول

للرد على سؤال محدد من "كيف استدعاء الحدث TkInter من كائن مستقل"، استخدم الأمر event_generate. انها تسمح لك لحقن الأحداث في قائمة انتظار الحدث من النافذة الجذر. جنبا إلى جنب مع قوة آلية الحدث الظاهري تاكا ليصبح رسالة يمر آلية يدوية.

وعلى سبيل المثال:

from tkinter import *

def doFoo(*args):
    print("Hello, world")

root = Tk()
root.bind("<<Foo>>", doFoo)

# some time later, inject the "<<Foo>>" virtual event at the
# tail of the event queue
root.event_generate("<<Foo>>", when="tail")

ملاحظة أن الدعوة event_generate سيعود فورا. ليس واضحا اذا كان هذا ما تريد أو لا. عموما كنت لا تريد برنامج الحدث استنادا لمنع انتظار استجابة لحدث معين لأنه سوف <م> تجميد GUI .

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

وهنا مثال من وسائل الوصول بنجاح على نافذة الجذر من بعض وجوه أخرى:

from tkinter import *

class myClass:
    def __init__(self, root):
        print("root background is %s" % root.cget("background"))

root = Tk()
newObj = myClass(root)

نصائح أخرى

وهنا فقط تحت بعض وثيقة وتصل إلى فهم أفضل إجابة بريان أعلاه.

ووصف وظيفة من نيو مكسيكو تك :

وw.event_generate(sequence, **kw)

<اقتباس فقرة>   

وهذه الطريقة تسبب حدث لتحريك دون أي حافز خارجي. التعامل مع الحدث هو نفسه كما لو كان قد تم تشغيله من قبل حافز خارجي. يصف حجة تسلسل الحدث يمكن تشغيلها. يمكنك تعيين قيم الحقول المحددة في كائن الحدث من خلال توفير الكلمة = الحجج القيمة، حيث تحدد الكلمة اسم حقل في الكائن الحدث.

وقائمة ووصف الحدث تى سى ال / المعارف التقليدية سمات هنا

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