How can I control keyboard repeat delay in a Tkinter root window?

And*_*rew 2 python keyboard user-interface tk-toolkit tkinter

This simple application almost does what I want:

import Tkinter as Tk

def hello(x):
    print "Hello"

root = Tk.Tk()
root.bind("<Up>", hello)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我将向上箭头捣碎,一遍又一遍地打印出"你好".但是,在重复开始之前有一段延迟,重复率比我想要的慢.如何将此重复延迟设置为零?如何控制重复间隔?

我知道其他Tkinter小部件有'repeatdelay'和'repeatinterval'的配置选项,但我似乎找不到一个Tkinter根窗口.

(我正朝你的方向看,布莱恩奥克利)

Bry*_*ley 6

这不是Tk中可配置的东西--Tk无法控制键盘驱动程序发送重复键事件的速度.

你可以做的是在按钮和按钮释放上设置一个绑定来设置然后取消设置标志.然后,您可以编写一个函数来执行您想要的任何操作,然后检查该标志并在您想要的任何延迟后再次调用自身.

该函数看起来像这样:

def hello(x):
    global SHOULD_REPEAT
    print "hello"
    if SHOULD_REPEAT:
        root.after(10, hello) # wait 10ms then repeat
Run Code Online (Sandbox Code Playgroud)

要做到正确需要更多的逻辑,但这是一般的想法.