Python Tkinter输入日期减法
我一直在尝试让我的Tkinter对话框做一个简单的日期减法,但有什么东西阻碍了它。从shell运行时,日期减法似乎有效,但我从这是Tk中什么也得不到 这段代码是从另一个脚本借用来的,我在所有窗体和windows设置中都成功地运行了这个脚本Python Tkinter输入日期减法,python,datetime,tkinter,Python,Datetime,Tkinter,我一直在尝试让我的Tkinter对话框做一个简单的日期减法,但有什么东西阻碍了它。从shell运行时,日期减法似乎有效,但我从这是Tk中什么也得不到 这段代码是从另一个脚本借用来的,我在所有窗体和windows设置中都成功地运行了这个脚本 #!/usr/bin/python from Tkinter import * import datetime import math fields = ('Enter Date (mm/dd/yy)', 'Days Since 10/30/14') d
#!/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()
#/usr/bin/python
从Tkinter进口*
导入日期时间
输入数学
字段=(“输入日期(mm/dd/yy)”,“自2014年10月30日起的天数”)
def计算(条目):
d=原始输入(条目[‘输入日期(mm/dd/yy)”)。获取()
nd=datetime.datetime.strtime(d,“%m/%d/%y”).date()
d1=“10/30/14”
od=datetime.datetime.strtime(d1,“%m/%d/%y”).date()
差值=(nd-od).天
差异=(“%8.2f”%diff.strip()
条目['自2014年10月30日起的天数]。删除(0,结束)
条目['自2014年10月30日起的天数].插入(0,差异)
def makeform(根,字段):
root.title('日期差异')
条目={}
对于字段中的字段:
行=帧(根)
lab=标签(行,宽度=22,文本=字段+“:”,锚点=w',字体=('arial',12))
ent=条目(行,字体=('arial',12))
行包装(侧面=顶部,填充=X,padx=5,pady=5)
实验室包装(侧面=左侧,padx=10)
ent.pack(侧面=右侧,展开=是,填充=X)
条目[字段]=ent
返回条目
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=Tk()
根几何(“400x400+300+300”)
ents=makeform(根,字段)
root.bind(“”,(lambda事件,e=ents:Calc(e)))
b1=按钮(root,text='Calculate',font=('arial',12),command=(lambda e=ents:Calc(e)))
b1.包装(侧面=左侧,padx=5,pady=5)
b2=按钮(root,text='Quit',font=('arial',12),command=root.Quit)
b2.组件(侧面=左侧,padx=5,pady=5)
root.mainloop()
任何帮助都将不胜感激
即使现在我把它搞得更糟了,不知何故它根本没有启动,并突出显示了makeform(root,fields)下的“lab”变量:
它一分钟前还在运行,但不会进行计算
帮忙
raw_input
通过命令行从用户获取数据。这是故意的吗?如果只想找到用户在条目中键入的内容,则不需要它
d = entries['Enter Date (mm/dd/yy)'].get()
谢谢是的,首先,在我的版本中,在“lab”变量之前的行末尾缺少“)”,这就是为什么它完全停止工作的原因。但在替换了它并删除了原始输入之后,它工作得很好。我想我认为我需要它,因为我以前在数字输入中使用了float,出于某种原因,原始输入似乎是非数字输入的一种方式。再次感谢,现在我将尝试添加更多的函数到这个。。。
d = entries['Enter Date (mm/dd/yy)'].get()