Tkinter Text ウィジェットを読み取り専用にする方法
胡金庫
2023年1月30日
Tkinter
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 は機能しないことです。つまり、コンテンツを編集したりコピーしたりすることはできません。
動作するために 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()
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: 胡金庫
