2013-04-17 2 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, NumB или NumC, а эти переменные не связаны ни с одним из виджетов. Кроме того, вы создаете переменные с именем NumA, NumB и NumC, но в вашей функции вы используете Num_A, Num_B и Num_C.

+0

Дорогой Брайан, благодарю вас за ваш оперативный ответ ... когда я копировал, я допустил ошибку, где я поместил Num_A, я имел в виду NumA, а также NumB и NumC, а Num_OneT на самом деле NumA. Прошу прощения за мою ошибку. спасибо – Hector

+0

@Hector: проблема остается в том, что вы не устанавливаете 'NumB' или' NumbC'. Я предлагаю в блоке 'except', что вы печатаете ошибки, а не игнорируете их. Таким образом, вы увидите причину, по которой значение не вычисляется. –