2012-02-03 80 views
2

我有一个python程序,它执行以下操作:它汇总问题列表以保存在文本文件中的问题,然后将问题显示给用户。显示问题后,python打开一个文本框,要求用户输入他们的答案。在他们按下“输入”后,要求用户以1至5的等级对答案进行评分(1非常自信)。所有问题完成后,程序将结果保存在文本文件中。在python中实现按键时间测量功能

已编写脚本,但我想添加一个时间度量脚本,用于度量从问题出现的那一刻起到用户开始键入答案的第一个字母为止的时间。然后我想让程序测量从第一次按键到按下输入的时间。因此,我希望程序能够衡量两件事情:从问题出现到第一次按键的时间,然后从第一次按键到用户按下输入的时间。任何帮助将不胜感激。

+3

为了回答这个问题,我们需要更多的信息 - 你用什么库来编写文本框系统?在Tkinter中,将回调绑定到事件,并将时间增量与问题显示时间进行比较。 – 2012-02-03 14:53:57

+0

我其实不确定你的意思。我在这方面是一个初学者。该计划是由一位志愿参加此项活动的学生编写的,但现在他不再可用了,我已经尝试过与之合作。 – 2012-02-03 16:35:33

回答

3

如果您正在使用的Tkinter(more here):

from Tkinter import * 
from time import time 

start_time = end_time = 0 
master = Tk() 
e = Entry(master) 
e.pack() 
e.focus_set() 

def key(event): 
    if event.char == '\r': 
     e.unbind("<Key>") 
     return 

    print "pressed", repr(event.char) 
    end_time = time() 
    print "measured time:", end_time-start_time 

e.bind("<Key>", key) 

start_time = time() 
mainloop() 

编辑:解除绑定的情况下,用户按“Enter”键

键收听您应该绑定一个按键侦听器(回调函数)来捕获的关键事件在你的回调函数中使用绑定方法和实现逻辑。

+0

嗨艾莉娜。这是试验的结果: ' 按下 'T' 测量时间:0.796999931335 按下的 'e' 测量时间:1.09400010109 按下的' 测量时间:1.21900010109 按下 'T' 测量时间:1.46900010109 按下'\ r' 测量时间:5.71900010109' 。我按“enter”后如何结束测试,以及如何测量'\ r'和't'之间的时间? – 2012-02-03 18:16:58

+0

Nico我更新了上面的代码,当用户按下\ r时停止计时器。如果您想测量\ t和\ r之间的时间,那么在用户按下\ t并开始您的计时器并在被按下的情况下完成。时差是你在找什么 – Aleyna 2012-02-03 20:06:25