Python 将插入光标保持在只读Tkinter条目上

Python 将插入光标保持在只读Tkinter条目上,python,python-3.x,tkinter,tkinter-entry,Python,Python 3.x,Tkinter,Tkinter Entry,我在python代码中使用tkinter模块为我正在创建的一个简单应用程序创建gui。我想知道,即使在“我的输入”小部件上的状态设置为“只读”时,是否可以使插入光标保持可见。我希望用户仍能看到插入光标在文本中的位置,但不能直接使用键盘编辑文本 注意: 当我说插入光标时,我指的不是普通的鼠标光标/指针,而是显示在文本上的闪烁条,可以编辑。我不知道它的正确名称是什么。。。下面是我的意思示例(条目中的黑条) 我曾尝试在Entry小部件中设置“insertwidth”和其他插入光标配置选项,以查看

我在python代码中使用tkinter模块为我正在创建的一个简单应用程序创建gui。我想知道,即使在“我的输入”小部件上的状态设置为“只读”时,是否可以使插入光标保持可见。我希望用户仍能看到插入光标在文本中的位置,但不能直接使用键盘编辑文本


注意:

当我说插入光标时,我指的不是普通的鼠标光标/指针,而是显示在文本上的闪烁条,可以编辑。我不知道它的正确名称是什么。。。下面是我的意思示例(条目中的黑条)


我曾尝试在Entry小部件中设置“insertwidth”和其他插入光标配置选项,以查看光标是否可能刚刚隐藏,但它不起作用

感谢您的帮助


谢谢

您可以阻止小部件上的所有键盘事件,而不是使输入小部件为只读,这使得无法在其中输入:

entry.bind("<Key>", lambda e: "break")
entry.bind(“,lambda e:“break”)

您可以阻止小部件上的所有键盘事件,而不是将输入小部件设置为只读,这使得无法在其中输入:

entry.bind("<Key>", lambda e: "break")
entry.bind(“,lambda e:“break”)

我建议您禁用
条目
并更改其
禁用背景
。例如:

entry.config(disabledbackground ="white",state="disabled")
因此,假设您使用的是
python3
,那么您的代码可以如下所示:

from tkinter import *
root = Tk()
ent = Entry(root)
ent.config(disabledbackground ="white",state="disabled")
ent.place(x=0,y=0)
mainloop()
您的输入将如下所示:

编辑: 由于问题已编辑,因此我建议您使用
bind
。与
@fhdrsdg
的答案不同,您可以更轻松地使用bind函数:

ent.bind("<Key>", "pass")
ent.bind(“,“pass”)
因此,您可以说您的完整代码是:

from tkinter import *
root = Tk()
ent = Entry(root)
ent.bind("<Key>", "pass")
ent.pack()
mainloop()
从tkinter导入*
root=Tk()
ent=条目(根)
ent.bind(“,”通过”)
ent.pack()
mainloop()
以下是一个屏幕截图:


我建议您禁用
条目
并更改其
禁用背景
。例如:

entry.config(disabledbackground ="white",state="disabled")
因此,假设您使用的是
python3
,那么您的代码可以如下所示:

from tkinter import *
root = Tk()
ent = Entry(root)
ent.config(disabledbackground ="white",state="disabled")
ent.place(x=0,y=0)
mainloop()
您的输入将如下所示:

编辑: 由于问题已编辑,因此我建议您使用
bind
。与
@fhdrsdg
的答案不同,您可以更轻松地使用bind函数:

ent.bind("<Key>", "pass")
ent.bind(“,“pass”)
因此,您可以说您的完整代码是:

from tkinter import *
root = Tk()
ent = Entry(root)
ent.bind("<Key>", "pass")
ent.pack()
mainloop()
从tkinter导入*
root=Tk()
ent=条目(根)
ent.bind(“,”通过”)
ent.pack()
mainloop()
以下是一个屏幕截图:


谢谢。这很有效。这也意味着我仍然可以将一个函数绑定到按键上,如果我不想让该键显示,则在函数中返回“break”。是的,返回
“break”
会告诉tkinter停止处理事件,因此不会执行事件的正常操作(例如,在按下a键时插入
a
),谢谢。这很有效。这也意味着我仍然可以将一个函数绑定到按键上,如果我不希望该键显示,则在函数中返回“break”。是的,返回
“break”
会告诉tkinter停止处理事件,因此事件的正常操作(例如,在按下a键时插入
a
)未执行。是的,这将使背景看起来正常,但问题是当状态为“禁用”或“只读”时,插入光标不显示。我想知道是否有可能强制插入光标在这些状态下显示。上面的答案为我的问题提供了另一种解决方案。@SamuelT检查这张图片。这很简单。你可以试着运行代码。我想你不太明白我的意思。抱歉,我的解释不是很好:)当我说插入光标时,我指的是条目小部件中的黑条。看看我编辑的问题。除了代码更简单之外,使用“传递”而不是“中断”有什么好处吗?我想我会使用“break”方法,因为我可以从函数返回它来停止特定的按键。无论如何,谢谢。是的,这会使背景看起来正常,但问题是当状态为“禁用”或“只读”时,插入光标不会显示。我想知道是否有可能强制插入光标在这些状态下显示。上面的答案为我的问题提供了另一种解决方案。@SamuelT检查这张图片。这很简单。你可以试着运行代码。我想你不太明白我的意思。抱歉,我的解释不是很好:)当我说插入光标时,我指的是条目小部件中的黑条。看看我编辑的问题。除了代码更简单之外,使用“传递”而不是“中断”有什么好处吗?我想我会使用“break”方法,因为我可以从函数返回它来停止特定的按键。无论如何,谢谢你。