如何使 Tkinter Text 控件变为只读

  1. 设置 Textstatedisable 将 Tkinter Text 变为只读
  2. 将任何按键都绑定到 break 功能以使 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()

相关文章 - Tkinter Text

  • 如何设置 Tkinter 文本控件的字体
  • 相关文章 - Tkinter

  • 如何使用按钮设置 Tkinter 文本控件的文本
  • 如何获取 Tkinter 文本框中的输入
  • comments powered by Disqus