2015-01-15 25 views
12

Sto scrivendo un programma Python in TKinter su Ubuntu per importare e stampare il nome di file da una particolare cartella nel widget Text. È solo l'aggiunta di nomi di file ai nomi file precedenti nel widget Text , ma prima voglio cancellarlo, quindi aggiungere un nuovo elenco di nomi di file. Ma sto facendo fatica a cancellare l'elenco precedente del widget Text di nomi di file .Come cancellare/cancellare il contenuto di un widget di Tkinter Text?

Qualcuno può spiegare come cancellare un widget Text?

Screenshoot e la codifica sta dando seguito:

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() 
+1

Hai letto tutta la documentazione per il widget di testo? Questa funzione è chiaramente documentata. Tu dici che stai lottando, puoi mostrarci cosa hai provato? –

+1

Forse http://effbot.org/tkinterbook/entry.htm#Tkinter.Entry.delete-method –

+0

Puoi scrivere l'istruzione qui per ottenere il risultato richiesto – Fahadkalis

risposta

33

ho controllato il mio lato semplicemente aggiungendo '1.0' e iniziare a lavorare

tex.delete('1.0', END) 

si può anche provare questo

+0

Grazie, ha funzionato quando ho capito che avevo bisogno di fare un tex .config (state = NORMAL) prima che potessi cancellarlo. – Seth

9

Secondo il tkinterbook il codice da cl orecchio un elemento di testo dovrebbe essere:

text.delete(1.0,END) 

Questo ha funzionato per me. source

'diverso da cancellare un elemento d'accesso, che avviene in questo modo:

entry.delete (0, END) #Notare il 0 anziché 1,0

+0

Trovo strano che '1.0' funzioni (anche se lo è davvero) poiché la mia comprensione è che gli indici di Tkinter dovrebbero essere specificati come stringhe come' '1.0'' (che funziona anche ed è come è fatto nella maggior parte degli altri posti in lo stesso documento). – martineau

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() 

Ecco un esempio di txt.delete(1.0,END) come accennato.

L'utilizzo di lambda ci consente di eliminare il contenuto senza definire una funzione effettiva.

Speranza che aiuti