ボタンを押したら、エントリのテキストをgetしたいです。また、クリアしたいです。
下記のようにソースコードを作りましたが、tk.Buttonだとできてttk.Buttonだとできません。
ttk.Buttonの場合は、ボタン押したときにそのボタンにフォーカスが移動してしまうからです。
ttk.Buttonで目的の機能を実装することは可能ですか?
Python
1import tkinter as tk 2from tkinter import ttk 3 4 5def on_button1(): 6 widget = root.focus_get() 7 if isinstance(widget, tk.Entry): 8 txt = widget.get() 9 print(txt) 10 var = var_table.get(widget["textvar"]) 11 var.set("") 12 13 14def on_button2(): 15 widget = root.focus_get() 16 # ttk.Entry は tk.Entry を継承しているので tk.Entry と比較しても問題なし 17 #if isinstance(widget, tk.Entry): 18 if isinstance(widget, ttk.Entry): 19 txt = widget.get() 20 print(txt) 21 var = var_table.get(widget["textvar"]) 22 var.set("") 23 24 25root = tk.Tk() 26 27sv1 = tk.StringVar() 28entry1 = tk.Entry(root, textvariable=sv1) 29entry1.grid() 30 31sv2 = tk.StringVar() 32entry2 = ttk.Entry(root, textvariable=sv2) 33entry2.grid() 34 35button1 = tk.Button(root, text="tk.Button", command=on_button1) 36button1.grid() 37 38button2 = ttk.Button(root, text="ttk.Button", command=on_button2) 39button2.grid() 40 41var_table = { 42 str(v): v for v in [sv1, sv2] 43} 44 45root.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/24 05:29