Как очистить / удалить содержимое текстового виджета Tkinter?

Я пишу программу Python в TKinter на Ubuntu для импорта и печати имя файлов из определенной папки в Text виджет. Это просто добавление файлов к предыдущему filnames в Text виджет, но я хочу сначала очистить его, а затем добавить новый список имен файлов. Но я изо всех сил пытаюсь очистить Text предыдущий список виджета файловые имена.

может кто-нибудь объяснить, как очистить Text виджет?

Screenshoot и кодирование дает ниже:

screenshot showing text widget with contents

import os
from Tkinter import *

def viewFile():
    path = os.path.expanduser("~/python")
    for f in os.listdir(path):
        tex.insert(END, f + "n")

if __name__ == '__main__':
    root = Tk()

    step= root.attributes('-fullscreen', True)
    step = LabelFrame(root, text="FILE MANAGER", font="Arial 20 bold italic")
    step.grid(row=0, columnspan=7, sticky='W', padx=100, pady=5, ipadx=130, ipady=25)

    Button(step, text="File View", font="Arial 8 bold italic", activebackground=
           "turquoise", width=30, height=5, command=viewFile).grid(row=1, column=2)
    Button(step, text="Quit", font="Arial 8 bold italic", activebackground=
           "turquoise", width=20, height=5, command=root.quit).grid(row=1, column=5)

    tex = Text(master=root)
    scr=Scrollbar(root, orient=VERTICAL, command=tex.yview)
    scr.grid(row=2, column=2, rowspan=15, columnspan=1, sticky=NS)
    tex.grid(row=2, column=1, sticky=W)
    tex.config(yscrollcommand=scr.set, font=('Arial', 8, 'bold', 'italic'))

    root.mainloop()

5 ответов


Я проверил на своей стороне, просто добавив "1.0", и он начинает работать

tex.delete('1.0', END)

вы также можете попробовать это


согласно tkinterbook код для очистки текстового элемента должен быть:

text.delete(1.0,END)

это сработало для меня. источник

это отличается от очистки элемента ввода, который выполняется следующим образом:

запись.удалить (0,END) #обратите внимание на 0 вместо 1.0


from Tkinter import *

app = Tk()

# Text Widget + Font Size
txt = Text(app, font=('Verdana',8))
txt.pack()

# Delete Button
btn = Button(app, text='Delete', command=lambda: txt.delete(1.0,END))
btn.pack()

app.mainloop()

вот пример txt.delete(1.0,END) Как уже упоминалось.

использование lambda позволяет нам удалять содержимое без определения фактической функции.

надеюсь, что это поможет


это работает

import tkinter as tk
inputEdit.delete("1.0",tk.END)

для меня "1.0" не работал, но '0' работал. Это Python 2.7.12, просто FYI. Также зависит от того, как вы импортируете модуль. Вот как:

import Tkinter as tk
window = tk.Tk()
textBox = tk.Entry(window)
textBox.pack()

и следующий код вызывается, когда вам нужно, чтобы очистить его. В моем случае была кнопка Save, которая сохраняет данные из текстового поля ввода и нажатию кнопки, текстовое поле очищается

textBox.delete('0',tk.END)