2016-07-25 13 views
-3

グローバル変数が自分のコードで機能していません。私はこれにかなり新しく、これを理解しているように見えることができません:対応するボタンによってトリガされた入力フィールドで操作できる変数を設定しました(これはgnaのみを表示しています)。何らかの理由で、ループ内で変更を反映していません。私は、変更された変数が同様にグラフ化することができますどこにそれを作るしようとしているが、それは私に次のエラーを与える:ここでグローバル変数が機能しない

Exception in Tkinter callback Traceback (most recent call last): 
File "C:\Program Files\Python35\lib\tkinter\__init__.py", line 1549, in __call__ 
    return self.func(*args) File "G:/PYTHON/Eulers.py", line 64, in graph 
    v[i + 1] = 1/c * (gna * f[i] - gk * u[i]) * del_t + v[i] 
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('< U32') dtype('< U32') dtype('< U32') 

は、コードは次のとおりです。

gna = 0.9 

gnalabel = Label(topFrame, text="gna = %s" % gna) 
gnalabel.pack() 

gnaEntry = Entry(topFrame, justify=CENTER) 
gnaEntry.pack() 

def gnacallback(): 
    global gna 
    gna = gnaEntry.get() 
    gnalabel.config(text="C = %s" % gna) 

gnaButton = Button(topFrame, text="Change", width=10, command=gnacallback) 
gnaButton.pack() 

def graph(): 
    global c, gna, gk, beta, gamma 

    for i in range(0, len(t)-1): 

     stinum = np.floor(i/3000) 
     stimt = 3000 + 3000 * (stinum - 1) 

     f[i] = v[i] * (1 - (((v[i]) ** 2)/3)) 
     v[i + 1] = 1/c * (gna * f[i] - gk * u[i]) * del_t + v[i] 

     if(i == stimt): 
      v[i + 1] = v[i + 1] + v_stim 

     u[i + 1] = (v[i] + beta - gamma * u[i]) * del_t + u[i] 

    plt.plot(v) 
    plt.show() 
+0

あなたのコードは非常にニシキヘビではありません - あなたは、不必要な使用 '()' –

+4

グローバル変数は、私がいずれも表示されないuoɥʇʎPʎzɐɹ[email protected]もの –

+0

の最後の種類のより多くのです。それは彼らの心配の中で最も小さいですが、 –

答えて

2
gna = gnaEntry.get() 

Entry.getリターンこれはおそらくで行っている算術演算には不適切な型です。最初に番号に変換してみてください。

gna = float(gnaEntry.get()) #or perhaps `int` if it's always an integer 
+0

ありがとうございました! –

+0

@EvelinRamosこれが問題を解決する場合は、答えを受け入れたとマークする必要があります。左側のチェックマーク –

関連する問題