如何使 Tkinter Text 控制元件變為只讀

Jinku Hu 2023年1月30日
  1. 設定 Textstatedisable 將 Tkinter Text 變為只讀
  2. 將任何按鍵都繫結到 break 功能以使 Tkinter Text 只讀
如何使 Tkinter Text 控制元件變為只讀

我們將介紹使 Tkinter Text 控制元件變為只讀的方法,

  1. Text 狀態設定為 disable
  2. 將任何按鍵都繫結到 break 功能

設定 Textstatedisable 將 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
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - Tkinter Text