如何使 Tkinter Text 控制元件變為只讀
Jinku Hu
2023年1月30日
我們將介紹使 Tkinter Text 控制元件變為只讀的方法,
- 將
Text
狀態設定為disable
- 將任何按鍵都繫結到
break
功能
設定 Text
的 state
為 disable
將 Tkinter Text
變為只讀
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
變為只讀相同的結果。
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 有效,那我們需要將 CTRL+C 作為繫結到 Text
函式的例外。
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()
作者: Jinku Hu