سؤال

أحاول ربط متغير بعامل إدخال Tkinter ، بطريقة:

  1. كلما قمت بتغيير القيمة ("المحتوى") للإدخال ، بشكل رئيسي عن طريق كتابة شيء ما فيه ، يتم توجيه المتغير تلقائيًا قيمة ما كتبته. دون أن أضطر إلى الضغط على زر "قيمة التحديث" أو شيء من هذا القبيل أولاً.

  2. كلما تم تغيير المتغير (بواسطة جزء آخر من البرنامج) ، أريد تعديل قيمة الإدخال تلقائيًا. أعتقد أن هذا يمكن أن يعمل عبر 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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top