Как очистить все поле ввода (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
  1. Индекс делается по строке и символу в ней: text.delete(1.0, tk.END)

  2. 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()
    
  3. 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', и все бы заработало.

→ Ссылка