Как изменить значение переменной за короткий промежуток времени? - PullRequest
0 голосов
/ 29 мая 2019

Я хочу изменить значение переменной только на короткий промежуток времени!Если пользователь нажимает клавишу «вверх» / «вниз», значение следует изменить в течение 3 секунд.Как я могу реализовать это в Python?

Я пробовал некоторые вещи, такие как time.sleep(), но с помощью этого метода Трон не движется в это время.

#Controls of Tron-Bike
#Up-Key increases the forward speed
def up():
      thread_sleep_time = 0.5
    # THIS code is ONLY for the POC (proof of concept)
    # normally in TRON, the "bike" moves with a constant speed
    # therefore you can use this hook
      print("heading P1:", t1.heading())

Я хочу изменить код, который thread_sleep_time установлен на 0,5, и через 3 секунды он должен измениться на 1.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Поскольку вы специально пометили [черепаха-графика], вот подход, использующий механизм таймера черепахи. Метод write() постоянно печатает текущее значение variable в центре экрана. Когда вы нажимаете клавишу со стрелкой вверх, происходит другое синхронизированное событие, которое меняет variable на другое значение в течение трех секунд, после чего оно восстанавливает свое первоначальное значение. Метод write() ничего об этом не знает, он просто отображает значение current :

from turtle import Screen, Turtle
from random import randint

FONT = ('Arial', 28, 'normal')

def up():
    global variable

    screen.onkey(None, "Up")  # disable handler inside handler

    screen.ontimer(lambda o=variable: reset_variable(o), 3000)  # in milliseconds

    variable = randint(1, 1000)

def reset_variable(original_value):
    global variable

    variable = original_value

    screen.onkey(up, "Up")  # restore event handler

def write():
    turtle.undo()
    turtle.write("variable = {}".format(variable), align='center', font=FONT)
    screen.ontimer(write, 250)

variable = randint(1, 1000)

screen = Screen()

turtle = Turtle(visible=False)
turtle.write("variable = {}".format(variable), align='center', font=FONT)

screen.onkey(up, "Up")
screen.listen()

write()

screen.mainloop()
0 голосов
/ 29 мая 2019

Вы должны получить значение, возвращаемое функцией, которая проверяет истекшее время и оценивает, какое возвращаемое значение.

Вот подсказка о том, как рассчитать прошедшее время:

import time

start_time = time.time()
elapsed_time = time.time() - start_time
...