2016-01-08 47 views
3

我对python很陌生,我正在尝试为自己做一个小项目,但我不明白如何在stop函数中使用start函数的初始时间变量,在那里我可以用它做数学运算。这是我目前的代码:如何测量按下python中的按钮与tkinter之间的流逝时间?

import time 
import Tkinter 
import tkMessageBox 

top = Tkinter.Tk() 

def start_time(): 
    tkMessageBox.showinfo("Timer", "The timer will now begin") 
    initial = time.time() 
    return initial 

def stop_time(initial): 
    final = time.time() 
    tkMessageBox.showinfo("Timer", final - initial) 

Start = Tkinter.Button(top, text ="Start", command = start_time) 
Stop = Tkinter.Button(top, text ="Stop", command = stop_time) 
Start.pack() 
Stop.pack() 
top.mainloop() 

回答

2

您的功能需要就共享数据的共同位置达成一致。对于这个简单的例子,模块的全局命名空间是一个不错的选择。您只需将global initial添加到更新它的函数中即可。对于较大的项目,您可能会移动到包含变量和更新它的函数的对象,但这对您的目标很合适。

import time 
import Tkinter 
import tkMessageBox 

initial = 0 

top = Tkinter.Tk() 

def start_time(): 
    global initial 
    tkMessageBox.showinfo("Timer", "The timer will now begin") 
    initial = time.time() 
    return initial 

def stop_time(): 
    # you could check for initial == 0 and display an error 
    final = time.time() 
    tkMessageBox.showinfo("Timer", final - initial) 

Start = Tkinter.Button(top, text ="Start", command = start_time) 
Stop = Tkinter.Button(top, text ="Stop", command = stop_time) 
Start.pack() 
Stop.pack() 
top.mainloop()