Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter输入日期减法_Python_Datetime_Tkinter - Fatal编程技术网

Python Tkinter输入日期减法

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

我一直在尝试让我的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')

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()