gpt4 book ai didi

python - 为什么 Entry.get() 落后一键?

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:55 27 4
gpt4 key购买 nike

考虑以下代码:

#!/usr/bin/env python3

from tkinter import *
from tkinter.ttk import *

root = Tk()

entry = Entry(root)
entry.bind('<Key>', lambda e: print(entry.get()))
entry.grid()

Button(text="Close", command=root.destroy).grid()

root.mainloop()

每次按下一个键时,它都会打印 entry 输入框中的文本,那么为什么它会打印出之前一个键的文本呢?

我怀疑这是因为 entry.get() 在将 key 添加到输入框之前运行。有办法解决这个问题吗?

<小时/>

示例:

当我输入以下内容时,一次一个键:

Python

打印以下内容

Pytho

最佳答案

我试图实时监控 Entry 小部件。

史蒂文的answer对这个问题提供了比绑定(bind)到所有键更好的方法:

Use a Tkinter.StringVar to track the value of the Entry widget. You can validate the value of the StringVar by setting a trace on it.

如果有人需要,以下是修改为使用 StringVar 的原始示例代码:

#!/usr/bin/env python3

from tkinter import *
from tkinter.ttk import *

root = Tk()

text_var = StringVar()
entry = Entry(root, textvariable=text_var)
text_var.trace('w', lambda nm, idx, mode: print(text_var.get()))
entry.grid()

Button(text="Close", command=root.destroy).grid()

root.mainloop()

关于python - 为什么 Entry.get() 落后一键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347023/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com