Найти - Пользователи
Полная версия: Питон Ткинтер как постепенно добавлять текст в виджет?
Начало » Python для новичков » Питон Ткинтер как постепенно добавлять текст в виджет?
1
regnor
Здравствуйте. Как постепенно добавлять текст в виджет? Пример:
 from tkinter import tk
import time
 
root = tk.Tk()
 
label = tk.Label(root, text='Stroka 1')
label.grid()
time.sleep(1)
 
label = tk.Label(root, text='Stroka 2')
label.grid()
time.sleep(1)
 
root.mainloop()
Я понимаю, что на самом деле он добавляет через каждую секунду строки, но показывает только когда доходит до root.mainloop(). Подскажите как реализовать. Спасибо.
FishHook
regnor
time.sleep(1) останавливает выполнение потока, в котором вызывается. У вас один поток в программе, поэтому на момент сна ничего вообще происходить не может. Запустите код, который будет засыпать в другом потоке.
PEHDOM
regnor
Я понимаю, что на самом деле он добавляет через каждую секунду строки, но показывает только когда доходит до root.mainloop()
вы должны понимать что делает на самом деле root.mainloop()
Tkinter является событийно-ориентированной библиотекой. В приложениях такого типа имеется главный цикл обработки событий. mainloop ка краз его и запускает.
гуглите что такое after, after_idle, after_cancel, update и update_idletasks.
 from tkinter import *
import time
def add_char():
    global count
    count +=1
    if count <= len(text):
        label['text']=text[0:count]
        root.after(1000, add_char)
count=0
text='Some text'
root = Tk()
label = Label(root, text='')
label.grid()
root.after(1000, add_char)
root.mainloop()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB