如何确保 tkinter 条目的内容保存在 FocusOut 上?
How can I make sure the content of a tkinter entry is saved on FocusOut?
我有一个应用程序使用 <FocusOut>
绑定自动将 Entry
中的编辑保存到列表中。
使用 TAB
浏览条目或单击另一个条目时,保存 Entry
文本没有问题,但如果我更改一个条目上的文本,然后如果我鼠标单击另一个框架中的 ListBox
,<FocusOut>
对最后选择的条目不起作用,其中的信息未注册。
如何在不借助 GUI 上的 Save
按钮的情况下避免这种情况?对于 ListBox
中的每个选择,都有不同的 Entry
框,因此用户必须多次按下 Save
按钮。我想避免这种情况。
改为实时编辑/保存文本
您似乎想要实时获取更新的文本。在这种情况下,我所做的是使用 'KeyRelease'
绑定。简单、有效的条目特定且立即工作。
概念中:
win = Tk()
def dosomething(*args):
# update the corresponding text anywhere, save your text, whatever
print(entry.get())
entry = Entry()
entry.bind("<KeyRelease>", dosomething)
entry.pack()
win.mainloop()
进行中:
M
Mo
Mon
Monk
Monke
Monkey
Monkey
Monkey e
Monkey ea
Monkey eat
Monkey eats
Monkey eats
Monkey eats b
Monkey eats ban
Monkey eats ban
Monkey eats bana
Monkey eats banan
Monkey eats banana
我有一个应用程序使用 <FocusOut>
绑定自动将 Entry
中的编辑保存到列表中。
使用 TAB
浏览条目或单击另一个条目时,保存 Entry
文本没有问题,但如果我更改一个条目上的文本,然后如果我鼠标单击另一个框架中的 ListBox
,<FocusOut>
对最后选择的条目不起作用,其中的信息未注册。
如何在不借助 GUI 上的 Save
按钮的情况下避免这种情况?对于 ListBox
中的每个选择,都有不同的 Entry
框,因此用户必须多次按下 Save
按钮。我想避免这种情况。
改为实时编辑/保存文本
您似乎想要实时获取更新的文本。在这种情况下,我所做的是使用 'KeyRelease'
绑定。简单、有效的条目特定且立即工作。
概念中:
win = Tk()
def dosomething(*args):
# update the corresponding text anywhere, save your text, whatever
print(entry.get())
entry = Entry()
entry.bind("<KeyRelease>", dosomething)
entry.pack()
win.mainloop()
进行中:
M
Mo
Mon
Monk
Monke
Monkey
Monkey
Monkey e
Monkey ea
Monkey eat
Monkey eats
Monkey eats
Monkey eats b
Monkey eats ban
Monkey eats ban
Monkey eats bana
Monkey eats banan
Monkey eats banana