我想让我的 tkinterText只是输出而不是输入。通过一些研究,我发现它text.config(state="disabled")会禁用用户输入,但它仍然允许选择我不想要的文本。
如何使我的Text小部件不可选择且不可写入?
最简单的方法是替换支持选择的默认文本绑定,以便它们不执行任何操作。有几种方法可以做到这一点:使用绑定标签,您可以删除所有默认绑定,或者您可以仅删除默认绑定子集的绑定。
小部件上的所有绑定(包括默认绑定)都与绑定标签(也称为“bindtags”)相关联。文本小部件的绑定标签是“Text”,文本小部件的所有默认绑定都与此标签关联。如果删除该绑定标记,则会删除所有特定于文本的绑定。
任何小部件的默认绑定标记都是小部件的字符串表示形式、内部小部件类(在本例中为“Text”)、顶层窗口的内部名称(在本例中为 root)以及特殊窗口的元组。标记“全部”。
在下面的示例中,我们更改绑定标签,以便不包含“文本”,从而有效地删除文本小部件上的所有默认绑定:
import tkinter as tk
root = tk.Tk()
text = tk.Text(root)
text.bindtags((str(text), str(root), "all"))
Run Code Online (Sandbox Code Playgroud)
如果您希望保留某些默认绑定,则可以仅替换您不需要的绑定。您可以通过创建自己的绑定并让这些绑定返回字符串“break”来实现此目的。这个特殊的返回值告诉 tkinter 停止进一步处理该事件。
例如,要防止双击选择光标下的单词,您可以这样做:
text.bind("<Double-1>", lambda event: "break")
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是您必须弄清楚与选择机制相关的所有绑定是什么。另一方面,它使您可以完全控制每个按键或按钮的操作。
| 归档时间: |
|
| 查看次数: |
2321 次 |
| 最近记录: |