Найти - Пользователи
Полная версия: Button + Text
Начало » GUI » Button + Text
1
ruthven
Добрый день. Подскажите, почему при нажатии на кнопку текст отображается не сразу, а только когда функция закончит работу.

from tkinter import *
import time
def txt(log):
    log.insert(END, 'Текст только через три секунды, почему и как исправить?')
    #Задержка, только чтобы показать, что текст выводится не сразу.
    time.sleep(3)
root = Tk()
root.geometry('150x150')
fr = Frame(root).grid()
button = Button(fr, text = 'Print text', command = (lambda: txt(log)))
button.grid(row = 0, column = 0, sticky = W)
log = Text(fr, width = 20, height = 8, wrap = WORD)
log.grid(row = 1, column = 0)
root.mainloop()
4kpt_III
sleep вообще ломает нормальный поток событий.
Для того, чтобы виджеты сразу реагировали на изменения можно использовать widget.update(). Это также помогает, когда операции выполняются в цикле.

P.S. Лучше from tkiter import * никогда не делать. Это плохо, очень плохо
ruthven
4kpt_III Спасибо, помогло. А как импортировать лучше, import tkinter или через from, но поименно?
4kpt_III
Есть варианты:

import tkinter

import tkinter as tk

from tkinter import Tk, Button, Text

Третий вариант когда количество используемых виджетов мало и импортируется только tkinter. Если же еще используется ttk, то только первый вариант. Ну как-то так. Первый вариант является универсальным.
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