Как очистить все поле ввода (Text) с помощью кнопки меню?
Были варианты
def delete_all(self):
self.text.delete(0, 'end')
или
def delete_all(self):
text.delete(1.0, 'End')
и еще много вариантов...
Но ни один вариант не сработал. Что делать? Вот весь код:
from tkinter import *
root = Tk()
root.title("Ocno")
root.geometry("1000x600")
def delete_all():
text.delete(1.0, 'END')
text = Text(root, height = 340, width = 500)
text.grid(row=2, column=0)
main_menu = Menu()
delete_menu=Menu()
delete_menu.add_command(label="Delete all", command=delete_all)
main_menu.add_cascade(label="Delete all", menu=delete_menu)
root.config(menu=main_menu)
root.mainloop()
Ответы (2 шт):
Автор решения: FotonPC
→ Ссылка
Индекс делается по строке и символу в ней:
text.delete(1.0, tk.END)-
import tkinter as tk root = tk.Tk() def change_font(): lab.config(font = (e.get(), 11)) lab = tk.Label(root, text = 'text label') lab.pack() tk.Button(root, text = 'сменить шрифт', command = change_font).pack() e = tk.Entry(root) e.pack() root.mainloop() ans = myentry.get()
Автор решения: insolor
→ Ссылка
Для вашего случая рабочие варианты такие:
text.delete(1.0, END)
или
text.delete(1.0, 'end')
При варианте импорта import tkinter as tk вместо END нужно использовать tk.END.
У вас первый вариант не рабочий, потому что self есть только в методах классов (у вас delete_all - просто функция, и нет переменных с именем self), и индекс начала в текстовом поле Text не 0, а 1.0. Во втором случае нужно было написать 'end' вместо 'End', и все бы заработало.