Уведомления

Группа в Telegram: @pythonsu

#1 Июль 23, 2019 16:08:33

regnor
Зарегистрирован: 2017-08-16
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Питон Ткинтер как постепенно добавлять текст в виджет?

Здравствуйте. Как постепенно добавлять текст в виджет? Пример:

 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(). Подскажите как реализовать. Спасибо.

Офлайн

#2 Июль 23, 2019 16:53:52

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Питон Ткинтер как постепенно добавлять текст в виджет?

regnor
time.sleep(1) останавливает выполнение потока, в котором вызывается. У вас один поток в программе, поэтому на момент сна ничего вообще происходить не может. Запустите код, который будет засыпать в другом потоке.



Офлайн

#3 Июль 23, 2019 20:31:06

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Питон Ткинтер как постепенно добавлять текст в виджет?

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()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 23, 2019 20:32:22)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version