首页 > 解决方案 > 在 Tkinter 条目中隐藏文本光标

问题描述

所以我正在处理 Tkinter 条目,我想知道是否有办法隐藏条目中的文本光标。这只是我创建的一个示例条目(现在看起来很可怕):

在此处输入图像描述

此条目中的文本光标非常清晰可见,即使我单击屏幕上的其他位置,它也会继续闪烁。有没有办法在 Tkinter 中手动隐藏光标?我无法找到有关该主题的任何文章,所以这甚至可能吗?

以下是在 tkinter 中创建条目的代码:

from tkinter import *

top = Tk()

E1 = Entry(top, bd=5)
E1.pack(side=RIGHT)
E1.focus_set()

top.mainloop()

所以这会引发同样的问题,我如何隐藏文本光标?这段代码也不会输出我给出的图像,因为它是用 goopylib 制作的,goopylib 是我在 Tkinter 之上制作的图形框架。因此,对于整个代码,您可以看到https://github.com/BhavyeMathur/goopylib/blob/master/goopylib/objects/Entry.py这是我使用的程序:

from goopylib.imports import *

window = GraphWin("Test Window", width=110, height=110)
Entry(Point(55, 55), text_width=10).draw(window)

while True:
    update(24)

要运行此代码,您需要安装 goopylib,您可以使用:

pip install goopylib

标签: pythonpython-3.xuser-interfacetkinter

解决方案


当小部件具有焦点时,光标可见,这对于用户在小部件中键入时很重要。

如果您不想要光标,记录的方法是将状态设置为“只读”。从规范文档中:

如果条目是只读的,那么即使输入焦点在小部件中,也不能使用小部件命令更改值并且不会显示插入光标;小部件的内容仍可能被选中。

问题也可能只是当您单击某处时,“其他地方”并非旨在获取键盘焦点。如果您调整绑定以使您单击的内容获得焦点,则焦点将从条目小部件中移除,并且光标将被隐藏,直到焦点恢复。

例如,如果您在画布上创建项目,则可以创建绑定以在单击时将焦点移至画布:

the_canvas.bind("<1>", lambda event: event.widget.focus_set())

当您单击画布时,焦点将移至画布并远离条目,因此条目将不再显示光标。


推荐阅读