Сначала давайте очистим код, чтобы он был более дружественным к PEP8, а также изменим импорт, чтобы мы не импортировали *
. Импортируя *
, вы рискуете перезаписать импорт и встроенные методы.
Я бы создал ваш виджет вне вашей функции, а затем заменил бы ваш цикл, содержащий sleep()
, на функцию, которая может вызывать себя и использоватьafter()
, так как режим сна блокирует ваш основной цикл, делая ваш GUI бесполезным и замороженным, пока весь сон не будет завершенafter()
используется, чтобы избежать этой проблемы.
import tkinter as tk
from tkinter import scrolledtext
root = tk.Tk()
root.title('test_loop')
root.geometry('750x625')
root.configure(background='ivory3')
textw = scrolledtext.ScrolledText(root, width=40, height=25)
textw.grid(column=0, row=1, sticky='nsew')
textw.config(background='light grey', foreground='black', font='arial 20 bold', wrap='word', relief='sunken', bd=5)
def show_msg(count=None):
if count is not None:
if count <= 5:
txt = 'This is {} times though the loop.'.format(count)
textw.delete('1.0', 'end')
textw.insert('end', txt)
count += 1
root.after(2000, lambda: show_msg(count))
else:
show_msg(1)
tk.Button(root, text='display_log', bg='light grey', width=15, font='arial 12', relief='raised', bd=5,
command=show_msg).grid(row=0, column=0)
root.mainloop()
Результаты:

Если вы хотите сохранить все свои журналына экране (при условии, что вы хотите, чтобы все обычные журналы были сохранены), я удалил бы команду удаления и затем добавил \n
к тексту, чтобы каждый журнал находился в новой строке.
Просто отредактируйтефункция как это:
def show_msg(count=None):
if count is not None:
if count <= 5:
txt = 'This is {} times though the loop.\n'.format(count)
# textw.delete('1.0', 'end')
textw.insert('end', txt)
count += 1
root.after(2000, lambda: show_msg(count))
else:
show_msg(1)
Результаты:

Дайте мне знать, если у вас есть какие-либо вопросы.