如何使 Tkinter Text 控制元件變為只讀
Jinku Hu
2023年1月30日
Tkinter
Tkinter Text
我們將介紹使 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()
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
