- 方法1: state=readonly の場合 tkinter.StringVar を使う
- 方法2: state=readonly を設定せずに、tkinter.Entry のキー入力イベントを無効にする
(但し、キー入力以外の入力手段がある場合抜け穴になる可能性がある為、
特別な理由がない限りは前者を検討してください)
python
1#!/usr/bin/env python3.8
2
3import tkinter as tk
4
5root = tk.Tk()
6
7# NOTE:
8# このサンプルコードではグローバル変数ですが、
9# "textVar" は、インスタンス変数(self.textVar)等に保存する。
10textVar = tk.StringVar(master=root, value="")
11entry1 = tk.Entry(root, textvar=textVar, state="readonly")
12entry1.pack()
13
14entry2 = tk.Entry(root) # textvar, state を設定しない場合
15entry2.pack()
16entry2.bind("<Key>", lambda _: "break")
17
18def clear():
19 textVar.set("")
20 entry2.delete(0, tk.END)
21
22def onclick():
23 textVar.set("Test ENTRY1")
24 entry2.insert(0, "Test ENTRY2")
25 root.after(1000, clear) # 1秒後クリア
26
27button = tk.Button(root, text="click", command=onclick)
28button.pack()
29root.mainloop()
30