🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

2回答

2900閲覧

Tkinterで、entryboxがアクティブ(カーソルを合わせる)にすると、entrybox内にある文字列を削除したい

goki_gottan

総合スコア168

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2021/02/17 02:59

Tkinterのentrybox(テキストボックス)に入っている文字列を、マウスカーソルで、
アクティブにするとボックス内の文字列を消すようにしたいです。

イベント処理と.delete(0,tkinter.END)で、消せると思うのですが、
テキストボックスがアクティブになったらという条件分岐が分かりません。

また、上と同じく、ショートカットキーでもイベント処理したく思います。
たとえば、F10キーです。

併せて、ご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

Marusoftware

総合スコア189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問