前提・実現したいこと
tkinterで自作の電卓を作成しています。
入力文字の前が" ) "の場合、自動で" * "付けるようにしました。
例)(1+2)の後に"3"を入力 → (1+2)*3
GUIボタン入力ではカーソルの位置をうまく設定できるのですが、
キーボード入力の場合、うまくカーソルの位置が移動してくれません。
簡素化したコードを載せましたので、ご教示いただければ幸いです。
発生している問題・エラーメッセージ
" * "を自動入力するとカーソルが入力した文字の前のままになる。
該当のソースコード
python
1import tkinter as tk 2 3def callback(var, indx, mode): 4 entry_label = entry.get() 5 char = entry_label[-1:] #入力文字 6 entry_label = entry_label[:-1]+'*'+char #入力文字の前に"*"を自動入力 7 str_v.set(entry_label) 8 entry.icursor('end') 9 10root = tk.Tk() 11 12str_v = tk.StringVar() 13entry = tk.Entry(root, textvariable=str_v ) 14str_v.trace_add("write", callback) 15entry.pack() 16entry.focus() 17 18root.mainloop()
試したこと
entry.icursor('end')やicursor(100)にしても変わらない
entry.icursor(0)なら一番最初にカーソルが移動する
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。