Tkinter缩放和动画将无法运行

时间:2019-09-03 13:32:58

标签: python matplotlib animation tkinter tkinter-scale

因此,我正在尝试获取代码,以使用户定义频率和持续时间。在那之后,我的程序开始播放频率并使用pyaudio播放它,我希望显示动画。我设法做到了,但是我的问题是当我放入Tkinter音阶以产生类似于多普勒效应的延迟时。我尝试将DoubleVar设置为以字母d表示的字符串,但是我的程序现在在发出声音后才退出。

p=pyaudio.PyAudio()
fs=44100
volume=.7
f=int(input('Enter your frequency:'))
t = float(input('Enter duration of signal (seconds):'))
samples=(np.sin(f*2*np.pi*np.arange(fs*t)/(fs)).astype(np.float32))
stream=p.open(format=pyaudio.paFloat32,
            channels=1,
            rate=fs,
            output=True)

stream.write(volume*samples)
stream.stop_stream()
stream.close()
p.terminate()

class Example(tk.Tk):
    def __init__(self):
        super().__init__()
        self.dou_var=tk.DoubleVar()
        self.scale = tk.Scale(self, from_=1, to=100, resolution=0.01,
                              variable=self.dou_var)
        self.scale.pack()
        tk.Button(self, text="Check Scale", command=self.check_scale).pack()

    def check_scale(self):
            d=str(self.dou_var.get())

def main():
    if __name__ == "__main__":
        Example().after()

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,
def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(np.sin((f/d)*2*np.pi*np.arange(fs*t)/(fs)).astype(np.float32)*i)
    line.set_data(x, y)
    return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=100, interval=20, blit=True)

没有错误消息。

0 个答案:

没有答案