Мне нужно выяснить задержку между отправкой команды на изменение цвета фона или воспроизведением звука и этими событиями, фактически происходящими с помощью timeit. (У меня Windows, Python 2.73)
Я провожу тест времени реакции, где Я буду записывать время (используя time.clock()) перед тем, как изменить цвет фона или воспроизвести звук. Затем, когда субъект нажимает клавишу, я снова записываю время и определяю время реакции по разнице.
Что касается воспроизведения звука, я сделал следующее:
import timeit
t = timeit.Timer(stmt = "winsound.PlaySound('C:\WINDOWS\media\Windows XP Error.wav', winsound.SND_FILENAME)",setup = "import winsound")
n = t.timeit(number = 100)
print n/100 -0.999
0,999 — это продолжительность файла Windows XP Error.wav в секундах.
Это дало мне около 56 мс. Я не уверен, что это разумно и правильно ли это сделать, а также должен ли я включать сборку мусора или нет?
Для смены фона у меня больше проблем. Поскольку я выполняю тест в полноэкранном режиме, я попытался поместить все это в параметр настройки:
from Tkinter import Tk
root=Tk()
root.overrideredirect(True)
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(),root.winfo_screenheight()))
root.mainloop()
Хотя я разделяю их все с помощью ; Я все еще получаю синтаксические ошибки. Когда я пробую это не в полноэкранном режимеsetup = 'from Tkinter import Tk; root=Tk(); root.mainloop()'
, окно фактически открывается, но ничего не происходит, и если я закрою его, я увижу другие ошибки.Invalid command name "."
Утверждение, которое я фактически измеряю, это root.configure(background='red')
.
timeit
вместо строки. Если вы не можете этого сделать, попробуйте разделить строки с помощью\n
вместо;
. - person abarnert   schedule 17.11.2012\n
выдал ту же ошибку. Я не совсем уверен, как передать функцию timeit, но если это сделать, не будет ли она также запускаться каждый раз, когда все эти вещи, которые я включил в настройку? - person user1830663   schedule 17.11.2012mainloop
, а не перед ним, вы должны ввести его в цикл, каким-то образом запустив его внутриTkinter
(как предлагает Мартино в комментарии к своему ответу). - person abarnert   schedule 20.11.2012mainloop
, что не имеет никакого смысла. После того, как он вернется,Tk
будет отключен, и вы больше не сможете на него звонить. - person abarnert   schedule 20.11.2012