كيفية توصيل متغير للدخول عن واجهة المستخدم؟
-
22-09-2019 - |
سؤال
أحاول ربط متغير بعامل إدخال Tkinter ، بطريقة:
كلما قمت بتغيير القيمة ("المحتوى") للإدخال ، بشكل رئيسي عن طريق كتابة شيء ما فيه ، يتم توجيه المتغير تلقائيًا قيمة ما كتبته. دون أن أضطر إلى الضغط على زر "قيمة التحديث" أو شيء من هذا القبيل أولاً.
كلما تم تغيير المتغير (بواسطة جزء آخر من البرنامج) ، أريد تعديل قيمة الإدخال تلقائيًا. أعتقد أن هذا يمكن أن يعمل عبر textvariable.
قرأت المثال على http://effbot.org/tkinterbook/entry.htm, ، لكنها لا تساعدني بالضبط على ما يدور في ذهني. لدي شعور بأن هناك طريقة لضمان الحالة الأولى باستخدام "التحقق" من الإدخال. أيه أفكار؟
المحلول
أعتقد أنك تريد شيئًا كهذا. في المثال أدناه ، قمت بإنشاء متغير myvar
وقام بتعيينه ليكون textvariable
من كلا أ Label
و Entry
الحاجيات. وبهذه الطريقة ، يتم اقتران كلاهما وستعكس التغييرات في أداة الإدخال تلقائيًا في التسمية.
يمكنك أيضا تعيين تتبع على المتغيرات ، على سبيل المثال للكتابة إلى stdout.
from tkinter import *
root = Tk()
root.title("MyApp")
myvar = StringVar()
def mywarWritten(*args):
print "mywarWritten",myvar.get()
myvar.trace("w", mywarWritten)
label = Label(root, textvariable=myvar)
label.pack()
text_entry = Entry(root, textvariable=myvar)
text_entry.pack()
root.mainloop()