python - 为什么在与 Tkinter 中的事件绑定时会延迟一步以及如何解决这个问题?
问题描述
考虑以下简单代码:
from tkinter import *
startingWindow = Tk()
entry = Entry(startingWindow)
entry.grid(row=0, column=0)
def writeWhatYouGet():
print((entry.get()).strip())
entry.bind('<Key>', lambda event:writeWhatYouGet())
startingWindow.mainloop()
我希望当我输入“1”时,我会立即打印出“1”。但是,当我按下第二个键时,我只得到“1”,在这种情况下是“2”。
如下所示:
打印输出就像
1
12
123
但是我希望输出如下:
1
12
123
1234
我怎样才能解决这个问题,以便我马上得到我写的东西?
解决方案
我不明白为什么您的代码不起作用,但我可以提供一个有效的解决方案。
将条目与 StringVar 关联,然后跟踪对 StringVar 的所有更改:
from tkinter import *
startingWindow = Tk()
text = StringVar()
entry = Entry(startingWindow, textvariable=text)
entry.grid(row=0, column=0)
def writeWhatYouGet(*args):
print(text.get())
text.trace_add("write", writeWhatYouGet) # Trace changes to StringVar "text"
startingWindow.mainloop()
推荐阅读
- javascript - 是否可以从渐变或两种颜色之间的范围中选择随机颜色?
- python - 在 python 类中对对象执行计算
- python - 格式化字符串时替换行
- python - 根据张量流中给定的序列长度数组对 3D 张量进行切片
- android - 从服务器收到状态码 403:Forbidden
- bash - Bash 文本处理
- python - 将带有特殊字符的非常大的 SPSS 文件读入 pandas
- android - Linux构建外部模块头文件路径问题
- docker - helm 中定义 Kubernetes Ingress 的问题
- python-3.x - 在 Anaconda 中安装软件包已停止