Вывод данных tkinter
Есть код:
from tkinter import *
root = Tk()
def get_range():
for i in range(1, 100000):
Label(root, text=i).pack()
Button(root, text='Click', command=get_range).pack()
root.mainloop()
При нажатии кнопки на форме происходит "зависание" до выполнения функции, однако необходимо выводить данные постепенно (после выполнения каждой итерации цикла).
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Вы не можете использовать цикл, потому что он останавливает mainloop.
Вы можете использовать root.after для вызова функции через n мс.
import tkinter as tk
def get_range(count):
# изменить текст в метке
label['text'] = count
if count > 0:
# Обратный отсчет через каждые 100 мс
root.after(100, get_range, count-1)
root = tk.Tk()
label = tk.Label(root)
label.place(x=35, y=35)
button = tk.Button(root, text='Click', command=lambda i=100000: get_range(i)).pack()
root.mainloop()
Автор решения: Дмитрий
→ Ссылка
from tkinter import *
import threading
root = Tk()
def get_range():
for i in range(1, 100000):
Label(root, text=i).pack()
t = threading.Thread(target=get_range)
Button(root, text='Click', command=t.start).pack()
root.mainloop()
