2014-11-04 4 views
0

Я пытаюсь получить мое диалоговое окно Tkinter для простого вычитания даты, но что-то держит его. Вычитание даты, похоже, задерживается при запуске из оболочки, но я ничего не получаю от этого, это Tk.Python 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

Смежные вопросы