Tkinter Text ウィジェットを読み取り専用にする方法
胡金庫
2023年1月30日
-
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 は機能しないことです。つまり、コンテンツを編集したりコピーしたりすることはできません。
動作するために 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()
著者: 胡金庫