循环不正确循环后的Python Tkinter

时间:2014-06-07 03:17:52

标签: python audio tkinter

我正在制作一个简单的节拍器,它每隔几毫秒播放一次嘀嗒声,具体取决于bpm,并使用winsound模块播放声音。我使用tkinter因为稍后会有一个gui组件,但是现在节拍器代码正在工作,它以恒定速率播放声音,但即使我设置后循环每隔几毫秒播放声音,它等待的时间更长,节拍比它应该慢。这是代码的问题还是我计算时间的问题?

感谢。

这是我的代码。

from Tkinter import *
import winsound,time,threading
root=Tk()
c=Canvas(root)
c.pack()
class metronome():
    def __init__(self,root,canvas,tempo=100):
        self.root=root
        self.root.bind("<1>",self.stop)
        self.c=canvas
        self.thread=threading.Thread(target=self.play)
        self.thread.daemon=True
        self.pause=False
        self.tempo=tempo/60.0
        self.tempo=1.0/self.tempo
        self.tempo*=1000
    def play(self):
        winsound.PlaySound("tick.wav",winsound.SND_FILENAME)
        self.sound=self.c.after(int(self.tempo),self.play)
    def stop(self,e):
        self.c.after_cancel(self.sound)
beat=metronome(root,c,120)
beat.thread.start()
root.mainloop()

0 个答案:

没有答案