2012-06-14 7 views
0

그래서 나는 임시 변환기를 만들고 있습니다. 나는 섭씨 화씨로 계산할 수 없습니다. 그것은 섭씨에서 화씨로 이동하지만 다른 방법으로 변환하지 않을 것입니다. 어떤 문제가 intvars 및 stringvars 시도한 원인이 확실하지 않지만이 문제를 해결할 것 및 아무도 diff if 문을 시도했지만 그냥 can not fah에서 cel로 변환합니다. 누군가 나를 도우 려하고 나에게 뭐가 잘못 됐는지 말해 줄래?파이썬 Tkinter 온도 변환기

from Tkinter import* 


def convert(): 
    celTemp = celTempVar.get() 
    fahTemp = fahTempVar.get() 



    if celTempVar.get() != 0.0: 
     celToFah = (celTemp * 9/5 + 32) 
     print celToFah 
     fahTempVar.set(celToFah) 

    elif fahTempVar.get() != 0.0: 
     fahToCel = ((fahTemp - 32) * (5/9)) 
     print fahToCel 
     celTempVar.set(fahToCel) 



def reset(): 
    top = Toplevel(padx=50, pady=50) 
    top.grid() 
    message = Label(top, text = "Reset Complete") 
    button = Button(top, text="OK", command=top.destroy) 

    message.grid(row = 0, padx = 5, pady = 5) 
    button.grid(row = 1, ipadx = 10, ipady = 10, padx = 5, pady = 5) 

    fahTempVar.set(int(0)) 
    celTempVar.set(int(0)) 





###MAIN### 
root = Tk() 
root.title("Temperature Converter") 
mainframe = Frame(root) 
mainframe.grid() 

celTempVar = IntVar() 
celTempVar.set(int(0)) 
fahTempVar = IntVar() 
fahTempVar.set(int(0)) 


titleLabel = Label (mainframe, text = "Celcius/Fahrenheit Temperature", font = ("Arial", 20, "bold"), justify = CENTER) 
titleLabel.grid(row = 1, column = 1, columnspan = 3, pady = 10, padx = 20) 

celLabel = Label (mainframe, text = "Celcius: ", font = ("Arial", 16), fg = "red") 
celLabel.grid(row = 2, column = 1, pady = 10, sticky = NW) 

fahLabel = Label (mainframe, text = "Fahrenheit: ", font = ("Arial", 16), fg = "blue") 
fahLabel.grid(row = 3, column = 1, pady = 10, sticky = NW) 

celEntry = Entry (mainframe, width = 10, bd = 5, textvariable = celTempVar) 
celEntry.grid(row = 2, column = 1, pady = 10, sticky = NW, padx = 125) 


fahEntry = Entry (mainframe, width = 10, bd = 5, textvariable = fahTempVar) 
fahEntry.grid(row = 3, column = 1, pady = 10, sticky = NW, padx = 125) 

convertButton =Button (mainframe, text = "Convert", font = ("Arial", 8, "bold"), relief = RAISED, bd=5, justify = CENTER, highlightbackground = "red", overrelief = GROOVE, activebackground = "green", activeforeground="blue", command = convert) 
convertButton.grid(row = 4, column = 1, ipady = 8, ipadx = 12, pady = 5, sticky = NW, padx = 55) 

resetButton = Button (mainframe, text = "Reset", font = ("Arial", 8, "bold"), relief = RAISED, bd=5, justify = CENTER, highlightbackground = "red", overrelief = GROOVE, activebackground = "green", activeforeground="blue", command = reset) 
resetButton.grid(row = 5, column = 1,ipady = 8, ipadx = 12, pady = 5, sticky = NW) 

root.mainloop() 

답변

3

문제점이 광고된다 : 여기가 무엇

fahToCel = ((fahTemp - 32) * (5/9)) 

문제가 5/9은 (그것 두 입력은 정수이기 때문에) 정수 나눗셈을 사용하여 계산된다는 것이다; 그것은 0와 같을 것입니다. 이것은 당신이 원하는 것이 아닙니다! 가능한 많은 수정이 있지만, 가장 단순한 것은 5.0/9.0을 명백하게 사용하여 부동 소수점 나누기를 명확하게 처리하는 것입니다. 네, 현재 작동 중입니다 만, float 입력이 celTemp 인 곱셈이 거기에서 나누기 전에 처리되기 때문입니다.

+0

OMg 정말 감사합니다. 나는 거의 3 일 동안이 문제에 갇혀 있었고 나는 결코 그것을 얻지 못했을 것이다. – user1352461