エントリが複数あり、それぞれにStringVar()をtextvariableで設定します。
ボタンを押すと、フォーカスがあたっているエントリに設定されているStringVar()でsetメソッドを使いたいです。
(Entryのdelete()、insert()などは使わないとする。)
ただ、フォーカスがあたっているエントリに設定されているStringVar()の取得ができず、上記の処理ができません。
focused_widget["textvariable"].set("") # Attribute Error: 'str' object has no attribute 'set'
focused_widget["textvariable"].widget.set("") # Attribute Error: 'str' object has no attribute 'widget'
などを試しましたができませんでした。
リストにentryとstringvarを[[entry1, sv1], [entry2, sv2]]のように入れて、
ループでfocus_get()と一致するエントリを割り出してから該当のsvを指定するやり方ならできるのですが、
Entryのインスンタンスentry1、entry2からsv1やsv2を得ることは可能ですか?
Python
1import tkinter as tk 2 3def func(): 4 focused_widget = win.focus_get() 5 if isinstance(focused_widget, tk.Entry): 6 # フォーカスがあたっているエントリのstringVar.set("")をしたい 7 pass 8 9 10win = tk.Tk() 11 12sv1 = tk.StringVar() 13sv2 = tk.StringVar() 14 15entry1 = tk.Entry(win, textvariable=sv1) 16entry1.grid() 17entry2 = tk.Entry(win, textvariable=sv2) 18entry2.grid() 19 20button = tk.Button(win, text="clear", command=func) 21button.grid() 22 23win.mainloop()

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。