2013-04-17 63 views
2

我在嘗試定義Tkinter gui中的指數函數時遇到了問題。我的Gui由三個組合框組成,我可以選擇不同的數字。當我選擇所有數字時,它會顯示基於指數函數的結果。我的意思是:Tkinter gui中的指數函數

  • 選擇NumberA #Combobox 1
  • 選擇NumberB #Combobox 2
  • 選擇NumberC#Combobox 3

    Result = exp[(-NumberA/NumberB)* NumberC] 
    

我有什麼至今如下,但它不起作用:

#Main Selection 
def exponential(*args): 
    try: 
     product.set('%g' %math.exp((float(Num_A.get())/float(Num_B.get())*float(Num_C.get()),2))) 
    except ValueError: 
     pass 

## variables 
NumA = StringVar() 
NumB = StringVar() 
NumC = StringVar() 

product= DoubleVar() 

#Combo boxes, 
#NumA NumB and NumC are similar 
ttk.Label(stepTen, text="Select A):").grid(column =3, row = 0) 
NumA_Select = Combobox(stepTen, values=("0.1", "0.2", "0.3","0.4",),textvariable=Num_OneT) 
NumA_Select.grid(column=4, row=0, columnspan="5", sticky="nswe") 
NumA.trace("w",exponential) 

## display results 
ttk.Label(stepTen, text = "Exponential Dist result:").grid(column = 3, row = 12) 
ttk.Label(stepTen, textvariable=product).grid(column = 4, row = 12) 

#End Code 
root.mainloop() 

非常感謝您提前!

+0

「不起作用」是什麼意思?程序崩潰了嗎?它是否計算錯誤的數字?您的計算機是否凍結?另外,您需要檢查代碼的格式。 –

回答

1

根據您的示例代碼,無處設置NumA,NumBNumC爲一個值,並且這些變量不與任何小部件關聯。另外,您可以創建名稱爲NumANumBNumC的變量,但在您的功能中,您使用的是Num_A,Num_BNum_C

+0

親愛的布賴恩,感謝您的及時迴應......當我複製時,我犯了一個錯誤,我把Num_A放在了NumA以及NumB和NumC,而Num_OneT其實是NumA。我爲我的錯誤道歉。謝謝 – Hector

+0

@Hector:問題仍然是你沒有設置'NumB'或'NumbC'。我建議在'except'塊中打印出錯誤,而不是忽略它們。這樣你會看到價值無法計算的原因。 –