Как очистить / удалить содержимое текстового виджета Tkinter?
Я пишу программу Python в TKinter
на Ubuntu для импорта и печати
имя файлов из определенной папки в Text
виджет.
Это просто добавление файлов к предыдущему filnames в Text
виджет, но я хочу сначала очистить его, а затем добавить новый список имен файлов.
Но я изо всех сил пытаюсь очистить Text
предыдущий список виджета
файловые имена.
может кто-нибудь объяснить, как очистить Text
виджет?
Screenshoot и кодирование дает ниже:
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
позволяет нам удалять содержимое без определения фактической функции.
надеюсь, что это поможет
для меня "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)