2014-11-04 2 views
0

Tkinter 대화 상자에서 간단한 날짜 뺄셈을 시도했지만 뭔가가 그것을 잡고 있습니다. 날짜 빼기는 쉘에서 실행될 때 멈추는 것처럼 보이지만, 나는 이것으로부터 아무것도 얻지 못합니다. Tk입니다.파이썬 Tkinter 입력 날짜 뺄셈

코드는 모든 양식 및 창 설정과 함께 성공적으로 실행되는 다른 스크립트에서 빌려 왔습니다.

#!/usr/bin/python 

from Tkinter import * 
import datetime 
import math 

fields = ('Enter Date (mm/dd/yy)', 'Days Since 10/30/14') 

def Calc(entries): 
    d = raw_input(entries['Enter Date (mm/dd/yy)'].get()) 
    nd = datetime.datetime.strptime(d, "%m/%d/%y").date() 
    d1 = "10/30/14" 
    od = datetime.datetime.strptime(d1, "%m/%d/%y").date() 
    diff = (nd - od).days 
    diff = ('%8.2f' % diff).strip() 
    entries['Days Since 10/30/14'].delete(0,END) 
    entries['Days Since 10/30/14'].insert(0, diff) 

def makeform(root, fields): 
    root.title('Date Difference') 
    entries = {} 
    for field in fields: 
     row = Frame(root) 
     lab = Label(row, width=22, text=field+": ", anchor='w', font=('arial', 12)) 
     ent = Entry(row, font=('arial', 12)) 
     row.pack(side=TOP, fill=X, padx=5, pady=5) 
     lab.pack(side=LEFT, padx=10) 
     ent.pack(side=RIGHT, expand=YES, fill=X) 
     entries[field] = ent 
    return entries 

if __name__ == '__main__': 
    root = Tk() 
    root.geometry("400x400+300+300") 
    ents = makeform(root, fields) 
    root.bind('<Return>', (lambda event, e=ents: Calc(e))) 
    b1 = Button(root, text='Calculate', font=('arial',12), command=(lambda e=ents: Calc(e))) 
    b1.pack(side=LEFT, padx=5, pady=5) 
    b2 = Button(root, text='Quit', font=('arial',12), command=root.quit) 
    b2.pack(side=LEFT, padx=5, pady=5) 
    root.mainloop() 
어떤 도움을 주시면 감사하겠습니다

...

심지어 지금은 어떻게 든 아예 시작하고이 분을 실행중인 makeform(root,fields):에서 "실험실"변수를 강조하지 않는, 그것을 더 엉망 전에는 계산을하지 않겠지 만 ...

도움말?

답변

0
d = raw_input(entries['Enter Date (mm/dd/yy)'].get()) 

raw_input은 명령 줄을 통해 사용자로부터 데이터를 가져옵니다. 그게 의도적 인거야? 사용자가 입력 한 내용을 찾으려는 경우에는 필요하지 않습니다.

d = entries['Enter Date (mm/dd/yy)'].get() 
+0

감사! 네, 우선, 제 버전의 "lab"변수 앞에있는 줄 끝 부분에 ")"이 빠졌습니다. 그래서 그것이 모두 작동을 멈추었습니다. 하지만이를 대체하고 raw_input을 제거한 후에는 정상적으로 작동했습니다. 나는 숫자 항목을 위해 float을 사용했고 raw_input이 비 숫자 값을 가지는 방법처럼 보이기 때문에 필자가 필요하다고 생각했다. 다시 한 번 감사드립니다. 이제이 기능에 더 많은 기능을 추가하려고합니다 ... – rickman90