Цикл for для показа таймера в окне tkinter, но он не открывает окно - PullRequest
0 голосов
/ 04 января 2019

Я делаю таймер с циклом for и показываю его в окне tkinter, но при выполнении сценария всплывающее окно отсутствует. Очень вероятно, что есть какая-то ошибка, о которой я не знаю, которая, вероятно, довольно проста, и я не вижу ее

Я попытался переместить цикл for в коде, чтобы, возможно, решить проблему, но это не помогло.

import tkinter
import time
root = tkinter.Tk()
label_1 = tkinter.Label(root, text="Start")
label_1.pack()
for i in range(1, 3600):
    label_1["text"] = i
    time.sleep(1)
root.mainloop()

1 Ответ

0 голосов
/ 04 января 2019

Окно появится через 3600 секунд. Не ждите 3600 секунд, чтобы увидеть его, просто измените изменение на 5 секунд. Проблема в том, что вы делаете label_1["test"] = i в основном потоке, так же, как приложение. Вам нужно выполнить такую ​​задачу в другом потоке, иначе такой цикл (из-за time.sleep) заблокирует приложение

import tkinter
import time
root = tkinter.Tk()
label_1 = tkinter.Label(root, text="Start")
label_1.pack()

import threading

def task():
    for i in range(1, 10):
        label_1["text"] = i
        time.sleep(1)

thread = threading.Thread(target = task)
thread.start()

root.mainloop()

Взгляните на эту запись о Многопоточность

Дайте мне знать, если это сработало для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...