如何使 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()
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