2017-10-25 1 views
0

私の問題はかなり単純です:周波数を設定し、ボタンをクリックして対応するサイン関数をプロットしたいと思います。残念ながら、プログラムは頻度値を更新しません。スケールがゼロから始まるので、私は周波数が常にゼロであることを理解します。プログラムの頻度を更新するにはどうすればよいですか?スケールを使って周波数変数を更新する

from tkinter import * 
import numpy as np 
import matplotlib.pyplot as plt 

Top = Tk() 

value = float() 
Label(textvariable=value).pack() 
Scale(from_=0, to_=10, variable=value).pack() 

def plot(): 
    freq = value 
    t = np.arange(0,20,0.01) 
    f = np.sin(2*np.pi*freq*t) 
    plt.plot(t,f,'r-') 
    plt.show() 


Button(text='Plot', command=plot).pack() 

mainloop() 

答えて

0

Scale(及びLabeltextvariableオプション)のvariableオプションがIntVarDoubleVar又はStringVarだけでなく、任意のPython変数を取ります。それらの違いは、返される値の型(それぞれint、floatまたはstr)です。値を取得する方法はget、変更する方法はsetです。 - >value = DoubleVar(Top)

freq = value - >freq = value.get()

value = float()

ので、次の変更があなたのコードを修正します