web-dev-qa-db-fra.com

Comment effacer/supprimer le contenu d'un widget Tkinter Text?

J'écris un programme Python dans TKinter sur Ubuntu pour importer et imprimer Le nom des fichiers d'un dossier particulier dans Text widget . Il s'agit simplement d'ajouter des noms de fichiers aux noms de fichiers précédents dans le répertoire. Text Widget, mais je veux d'abord l'effacer, puis ajouter une nouvelle liste de noms de fichiers . Mais j'ai du mal à effacer la liste précédente des noms de fichiers du fichier Text.

Quelqu'un peut-il s'il vous plaît expliquer comment effacer un widget Text?

Screenshoot et codage est donné ci-dessous:

 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 __== '__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()
16
Fahadkalis

J'ai vérifié de mon côté en ajoutant simplement '1.0' et ça commence à fonctionner

tex.delete('1.0', END)

vous pouvez aussi essayer ceci

41
Fahadkalis

Selon le tkinterbook, le code pour effacer un élément de texte devrait être:

text.delete(1.0,END)

Cela a fonctionné pour moi. la source

C'est différent d'effacer un élément d'entrée, ce qui se fait comme ceci: 

entry.delete (0, END) #note le 0 au lieu de 1.0

12
DaanP

cela marche

import tkinter as tk
inputEdit.delete("1.0",tk.END)
3
saigopi
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()

Voici un exemple de txt.delete(1.0,END) tel que mentionné.

L'utilisation de lambda nous permet de supprimer le contenu sans définir de fonction réelle. 

J'espère que cela pourra aider

1
Bishop

pour moi, "1.0" n'a pas fonctionné, mais "0" a fonctionné. Ceci est Python 2.7.12, juste pour votre information. Cela dépend également de la manière dont vous importez le module. Voici comment:

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

Et le code suivant est appelé lorsque vous devez le supprimer. Dans mon cas, il y avait un bouton Enregistrer qui enregistre les données de la zone de texte Entrée et après avoir cliqué sur le bouton, la case est effacée

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