Tkinterのentrybox(テキストボックス)に入っている文字列を、マウスカーソルで、
アクティブにするとボックス内の文字列を消すようにしたいです。
イベント処理と.delete(0,tkinter.END)で、消せると思うのですが、
テキストボックスがアクティブになったらという条件分岐が分かりません。
また、上と同じく、ショートカットキーでもイベント処理したく思います。
たとえば、F10キーです。
併せて、ご教示ください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
おはようございます。
問題文読ませていただきました。
こんな感じでいかがでしょうか?
python
1import tkinter as tk 2 3 4class Application(tk.Frame): 5 # 氏名入力用変数 6 entryName = None 7 8 # クリアボタンがクリックされた場合に実行される関数 9 # 氏名の入力データをクリアする。 10 def clearCommand(self, event): 11 # delete : 氏名情報の削除を行う。 12 # 第一引数 : 削除する文字列の開始位置(0番目からスタート) 13 # 第二引数 : 削除する文字列の最終位置 14 # tk.END : 文字列の最終位置 15 self.entryName.delete(0, tk.END) 16 17 def __init__(self, master=None): 18 # Windowの初期設定を行う。 19 super().__init__(master) 20 21 # Windowの画面サイズを設定する。 22 # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/ 23 self.master.geometry("300x200") 24 25 ############################################## frame Widget START ############################################## 26 27 # Windowを親要素として、frame Widget(Frame)を作成する。 28 # frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/ 29 frame = tk.Frame(self.master) 30 31 # Windowを親要素とした場合に、frame Widgetをどのように配置するのか? 32 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 33 frame.pack() 34 35 ############################################## frame Widget END ############################################## 36 37 ############################################## entry Widget START ############################################## 38 39 # frame Widget(Frame)を親要素として、氏名用のentry Widgetを作成する。 40 # width : 幅の設定 41 self.entryName = tk.Entry(frame, width=15) 42 43 # frame Widget(Frame)を親要素とした場合に、氏名用のentry Widgetをどのように配置するのか? 44 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 45 self.entryName.pack() 46 47 # 氏名の入力先へデフォルトで格納したい文字列の挿入。 48 # 第一引数 : 文字列の挿入開始位置(0番目からスタート) 49 # 第二引数 : 挿入文字列 50 self.entryName.insert(0, "氏名") 51 52 # イベントと関数の実行を紐づける。 53 # 第一引数 : イベント内容。entry Widgetのテキストボックスへカーソルが当てられた場合 54 # 第二引数 : 第一引数が試行された場合に、実行する関数名。clearCommandとする。 55 # bindについて : https://kuroro.blog/python/eI5ApJE1wkU7bHsuwk0H/ 56 self.entryName.bind("<FocusIn>", self.clearCommand) 57 58 ############################################## entry Widget END ############################################## 59 60# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program 61if __name__ == "__main__": 62 root = tk.Tk() 63 app = Application(master=root) 64 # Windowをループさせて、継続的にWindow表示させる。 65 # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/ 66 app.mainloop()
ご確認いただけますと幸いです。????♂️
投稿2021/06/09 21:03
退会済みユーザー
総合スコア0
0
ベストアンサー
おまたせしました!!
こんな感じでいかがでしょう
python3
1import tkinter 2 3def focus(ev): 4 e.delete(0, tkinter.END) 5 6root = tkinter.Tk() 7e = tkinter.Entry(root) 8e.pack() 9e.bind("FocusIn", focus) 10#e.bind("KeyPress-F10") 11root.mainloop()
こことか参考になると思います。
投稿2021/03/09 10:00
総合スコア189
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。