Как добавить сюда время в приложение?
У меня есть программа, она можно сказать проверяет твою концентрацию внимания.
Суть ее заключается в том, что нужно нажимать на кнопку только когда число на экране меньше 5, b - кол-во правильных ответов, то есть если число на экране менше 5 и кнопка нажата, то к b прибавляется один.
Если же число равно 5 и кнопка нажата, то кол-во правильных ответов - b остается тем же.
В конце выводится процент правильных ответов.
Но теперь мне нужно сюда прицепить время. Я хочу, чтобы каждые 2 секунды функция происходила, и если кнопка не нажата, и время прошло, то кол-во правильных ответов-b остается тем же.
Есть предложения как это сделать?
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Тест на концентрацию внимания")
root.geometry("700x350")
numbers = [1,3,5,5,2,3,5,5,1,3,3,1,5,4,5,1,5,2,2,5,6]
current_index = -1
b= -1
def press():
global b
global current_index
current_index += 1
if numbers[current_index]<5 :
b+=1
print(b)
label.config(text=numbers[current_index])
elif numbers[current_index]==5:
b=b
print(b)
label.config(text=numbers[current_index])
elif numbers[current_index]==6:
c=b/20*100
label.config(text=int(c))
btn = ttk.Button(text="Кнопка", width=20, command = press)
btn.pack()
label=Label(text="Нажмите, чтобы начать", font=('Times 70'), width=60, height=50)
label.pack()
root.mainloop()
Ответы (2 шт):
Импортируй модуль time и примени функцию sleep() для ожидания 2 секунды между каждой функцией:
import time
def press():
global b
global current_index
current_index += 1
if numbers[current_index]<5 :
b+=1
print(b)
label.config(text=numbers[current_index])
elif numbers[current_index]==5:
b=b
print(b)
label.config(text=numbers[current_index])
elif numbers[current_index]==6:
c=b/20*100
label.config(text=int(c))
time.sleep(2)
Возможный вариант выглядит примерно так:
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Тест на концентрацию внимания")
root.geometry("800x350")
numbers = [
1, 3, 5, 5, 2, 3, 5, 5, 1, 3,
3, 1, 5, 4, 5, 1, 5, 2, 2, 5,
6
]
current_index = 0 # -1
b = 0 # -1
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
i = 0
labelText = StringVar()
lbl = Label(root, textvariable=labelText)
lbl.pack()
def updateDepositLabel(txt=""):
global i
if i == 777:
return
text = f"Прошло {i} сек."
labelText.set(text)
i += 1
root.after(1000, lambda: updateDepositLabel(txt=text))
def press():
global b, i
global current_index
if current_index == 0: # +++
i = 0
root.after(1000, lambda: updateDepositLabel(txt=f""))
if numbers[current_index] < 5 and i < 3 : # + and i < 3
b += 1
elif numbers[current_index] == 5:
pass
label.config(text=numbers[current_index])
current_index += 1
i = 0
if numbers[current_index-1] == 6:
c = b / 20 * 100
label.config(text=f'{int(c)} <---- ФИНИШ')
current_index = 0
i = 777
b = 0
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
btn = ttk.Button(text="Кнопка", width=20, command=press)
btn.pack()
label=Label(text="Нажмите, чтобы начать", font=('Times 50'),
width=60, height=50)
label.pack()
root.mainloop()


