Как добавить время (галочки) в GUI для игры - PullRequest
0 голосов
/ 20 июня 2019

Я хочу добавить тиканье времени в секундах в графический интерфейс для игры кликера.Поэтому идея состоит в том, чтобы иметь функцию, которая вызывается каждые n тиков, и эта функция увеличивает объекты X.

Я пытался использовать цикл while как до, так и после вызова метода .mainloop ().Это не сработало ни в одном случае, я также попробовал сумасшедшую идею иметь метод mainloop () внутри цикла while (осознавая, что это будет делать, lol).

from tkinter import *
import time
result = 0

window = Tk()
window.title("Numbers Game")
window.geometry('360x240')

label = Label(window, text=result)
label.grid(column=0,row=0)

def clicked():
    global result
    result += 1
    label.config(text=result)

button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)

window.mainloop()

while True:
time.sleep(1)
clicked()

Текущая версия моегоКод выдает ошибку, в которой упоминается функция, выполняющая связанные с GUI вещи за пределами окна.Но я не имею ни малейшего понятия о том, как этого добиться.

1 Ответ

1 голос
/ 20 июня 2019

Вы хотите сказать, что хотите, чтобы счетчик результатов увеличивался каждую секунду? Вы не можете использовать бесконечные циклы с GUI, потому что они мешают основной петле GUI. Вы должны интегрировать свой код в основной цикл, используя метод after.

from tkinter import *
import time
result = 0

window = Tk()
window.title("Numbers Game")
window.geometry('360x240')

label = Label(window, text=result)
label.grid(column=0,row=0)

def clicked():
    global result
    result += 1
    label.config(text=result)

def tick():
    clicked()
    window.after(1000, tick) # after 1,000 milliseconds, call tick() again

button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)

tick() # start the "loop"
window.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...