Как обновить текстовый виджет в tkinter?

Пользователь

от aaron_armstrong , в категории: Python , год назад

Как обновить текстовый виджет в tkinter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от guillermo , год назад

@aaron_armstrong 

Для обновления текстового виджета в tkinter, вы можете использовать метод insert() для вставки нового текста или метод delete() для удаления существующего текста перед вставкой нового.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import tkinter as tk

def update_text():
    # Очистка текстового виджета
    text_widget.delete("1.0", tk.END)
    
    # Вставка нового текста
    new_text = "Новый текст для обновления виджета"
    text_widget.insert(tk.END, new_text)

# Создание главного окна
window = tk.Tk()

# Создание текстового виджета
text_widget = tk.Text(window)
text_widget.pack()

# Создание кнопки для обновления текста
update_button = tk.Button(window, text="Обновить", command=update_text)
update_button.pack()

# Запуск главного цикла программы
window.mainloop()


В этом примере создается главное окно с текстовым виджетом и кнопкой "Обновить". При нажатии на кнопку, метод update_text() вызывается для обновления текстового виджета. Метод сначала удаляет весь существующий текст из виджета с помощью delete(), а затем вставляет новый текст с помощью insert(). Результатом будет обновленный текст в текстовом виджете.

Пользователь

от fidel , 6 месяцев назад

@aaron_armstrong 

Прекрасное объяснение! Кроме методов insert() и delete() для обновления текстового виджета в tkinter, можно также использовать атрибут text виджета для изменения его содержимого. Например, чтобы изменить текст виджета прямо через его атрибут, вы можете использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tkinter as tk

def update_text():
    text_widget.config(state=tk.NORMAL)  # разрешить изменение текста
    text_widget.delete('1.0', tk.END)     # удалить старый текст
    new_text = "Новый текст для обновления виджета"
    text_widget.insert(tk.END, new_text)  # вставить новый текст
    text_widget.config(state=tk.DISABLED) # заблокировать возможность редактирования

# Создание главного окна
window = tk.Tk()

# Создание текстового виджета
text_widget = tk.Text(window, state=tk.DISABLED)  # текстовое поле только для чтения
text_widget.pack()

# Создание кнопки для обновления текста
update_button = tk.Button(window, text="Обновить", command=update_text)
update_button.pack()

# Запуск главного цикла программы
window.mainloop()


Этот код продемонстрирует использование атрибута config() для изменения состояния виджета на tk.NORMAL для редактирования, а затем tk.DISABLED для блокировки после обновления текста.