Tkinter Text ウィジェットを読み取り専用にする方法
-
Text
のstate
をdisable
に設定すると、TkinterText
を読み取り専用にする -
任意のキーを
break
関数にバインドして、TkinterText
を読み取り専用にする

Tkinter Text ウィジェットを読み取り専用にする方法を紹介します。
Text
状態をdisable
に設定しますbreak
機能に任意のキーをバインドします
Text
の state
を disable
に設定すると、Tkinter Text
を読み取り専用にする
Text
ウィジェットは、読み取り専用の状態になるように設定された後になると disable
。
Text
ウィジェットは、その状態 state
を disable
に設定した後、ウィジェットが読み取り専用になります。
import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0,"ABCDEF")
readOnlyText.configure(state='disabled')
readOnlyText.pack()
root.mainloop()
Text
ウィジェットのデフォルトの状態は NORMAL
です。これは、ユーザーがその中のテキストコンテンツを編集、追加、挿入、または編集できることを意味します。
readOnlyText.configure(state='disabled')
Text
ウィジェットの状態を DISABLED
読み取り専用に変更する必要があります。そのウィジェット内のテキストを変更しようとしても、黙って無視されます。
Text
ウィジェットのコンテンツを更新する場合は、状態を disabled
から normal
に変更する必要があります。そうしないと、Text
はずっと読み取り専用です。任意のキーを break
関数にバインドして、Tkinter Text
を読み取り専用にする
我々は唯一返すことを関数に任意のキーストロークをバインドする場合 break
に Text
ウィジェット、我々はそれを同じ結果を得ることができ Text
、読み取り専用になります。
任意のキーを break
の関数だけを Text
ウィジェットをバインドすると、Text
が読み取り専用になるのと同じ結果が得られます。
import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0,"ABCDEF")
readOnlyText.bind("<Key>", lambda a: "break")
readOnlyText.pack()
root.mainloop()
動作するために CTRL+C が必要な場合、Text
関数の例外として CTRL+C をバインドする必要があります。
import tkinter as tk
def ctrlEvent(event):
if(12==event.state and event.keysym=='c' ):
return
else:
return "break"
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0,"ABCDEF")
readOnlyText.bind("<Key>", lambda e: ctrlEvent(e))
readOnlyText.pack()
root.mainloop()
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn