【问题标题】:Hide Text Cursor in Tkinter Entry在 Tkinter 条目中隐藏文本光标
【发布时间】:2020-07-09 07:16:32
【问题描述】:

所以我正在处理 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

【问题讨论】:

  • 你能把你的代码也包括进来吗
  • 是的,我会这样做的。所以问题是,我实际上并没有使用 Tkinter,我使用的是 Goopylib,这是一个由我在 Tkinter 之上构建的图形库,其代码非常大......github.com/BhavyeMathur/goopylib/blob/master/goopylib/objects/…
  • 我会努力缩短在这里发帖的时间。
  • 是的,请 ????
  • @CoolCloud 哇哦,insertontime 确实有效!如果您愿意,您可以将其发布为答案,我可以接受。谢谢!

标签: python python-3.x user-interface tkinter


【解决方案1】:

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

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

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

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

例如,如果您要在画布上创建项目,您可以创建一个绑定,以便在您单击它时将焦点移到画布上:

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

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

【讨论】:

  • 好的,感谢您的帮助!考虑到文档所说的内容以及它实际上实现了我想要做的事情而无需绕过的事实,我认为这样做会更好。
【解决方案2】:

要隐藏输入框上的光标(称为插入光标),我们可以使用输入框的参数,例如:

Entry(top,insertontime=0,bd=5)

使用E1.focus_set() 将在应用程序一开始启动时将焦点设置到输入框,除非您点击离开。

【讨论】:

  • 不应该是E1=Entry(top,insertontime=0,bd=5)之类的吗?
  • @WinEunuuchs2Unix 是的,我只是单独展示对象。
【解决方案3】:

要隐藏 Entry 小部件的闪烁光标, 它非常简单。

Entry(root,
      insertontime=0,
)

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    相关资源
    最近更新 更多