2

この単純なアプリケーションは、ほとんど私が望むことを行います:

import Tkinter as Tk

def hello(x):
    print "Hello"

root = Tk.Tk()
root.bind("<Up>", hello)
root.mainloop()

上向きの矢印を押し下げると、「Hello」が何度も表示されます。ただし、この繰り返しが始まるまでに遅延があり、繰り返し速度が思ったよりも遅くなります。この繰り返し遅延をゼロに設定するにはどうすればよいですか? 繰り返し間隔を制御するにはどうすればよいですか?

他の Tkinter ウィジェットには「repeatdelay」と「repeatinterval」の構成オプションがあることは知っていますが、Tkinter ルート ウィンドウ用のオプションが見つからないようです。

(私はあなたの方向を見ています、ブライアン・オークリー

4

2 に答える 2

6

これは、Tk で構成できるものではありません。Tk は、キーボード ドライバーが繰り返しキー イベントを送信する速度を制御できません。

代わりにできることは、ボタンを押してボタンを放してフラグを設定してから解除することです。次に、実行したいことを実行する関数を作成し、フラグをチェックして、必要な遅延の後に再度呼び出すことができます。

関数は次のようになります。

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

それを正しく行うには、もう少しロジックが必要ですが、それが一般的な考え方です。

于 2012-10-21T05:45:42.387 に答える