0

Tkinter のcanvas.coords()方法に問題があります。キャンバスを 1/60 秒ごとに更新し、右矢印キーが押されたことを検出しようとしています。問題は、右矢印をしばらく押し続けるとエラーが発生することです。

http://postimage.org/image/bdfk3m8gx/

私のスクリプトは「novo.py」で、コードは以下のとおりです。おそらく助けはありますか?私はただの初心者です。

import Tkinter, threading, time

def real_time(td, canvas):
    while True:
        time.sleep(1/60.0)
        canvas.coords('line',1,1,200,200)

def func(event):
    print 'key pressed'


root = Tkinter.Tk()
canvas = Tkinter.Canvas(root)
canvas.pack()
canvas.create_line(1,1,100,100, tag='line')
root.bind('<Right>', func)
thread = threading.Thread(target = real_time, args = (1/60.0, canvas))
thread.start()
root.mainloop()
4

1 に答える 1

0

Tkinter はスレッド セーフではなく、多くの場合、スレッドは必要ありません。

あなたの場合after、N ミリ秒ごとに何かを定期的に ron するために使用できます。たとえば、1 秒あたり約 60 回何かを実行するには、次のようにします。

def real_time():
    <do something here>
    self.after(16, real_time)

次に、プログラムの起動時にこの関数を 1 回呼び出します。

real_time()
于 2012-12-23T14:53:08.903 に答える