Как добавить экранный таймер в мою игру? - PullRequest
0 голосов
/ 11 января 2020

Итак, я делаю игру, в которой я хочу, чтобы можно было рассчитать, сколько времени потребуется, чтобы завершить sh и отобразить ее в окне, которое я использую. Проблема, с которой я сталкиваюсь, заключается в том, что как только код входит в l oop, он застревает там, а не запускает таймер и игру одновременно. Я пытался провести некоторые исследования и использовать потоки, чтобы они запускались одновременно, но каждый раз, когда я пытаюсь это остановить, мне приходится убивать программу. Любые идеи о том, как это сделать?

из tkinter import * import time

root = Tk()

timer = Label(root, text="0", width=100, height=100)
timer.pack()

def new_game():
    # a bunch of game code
    start_timer()


def start_timer():
    timer_time = 0
    while timer_time <= 999:
        time.sleep(1)
        timer.config(text=str(timer_time))


new_game()

root.mainloop()

1 Ответ

0 голосов
/ 12 января 2020

Это было много раз - используйте after() вместо sleep() и while

import tkinter as tk # `import *` is not preferred
import time

# --- function ---

def update_timer():
    global timer_time

    #timer['text'] = time.strftime('%H:%M:%S')
    timer['text'] = str(timer_time)
    timer_time += 1

    if timer_time <= 999:
        root.after(1000, update_timer) # 1000ms = 1s

# --- main ---

timer_time = 0

root = tk.Tk()

timer = tk.Label(root, width=10)
timer.pack()

update_timer()

root.mainloop()
...