[ Foro de Python ]

listbox y botones vinculados

08-Mar-2017 01:48
Invitado (Juanlu)
0 Respuestas

Buenas tardes, estoy aprendiendo a programar en Python 3 y me han surgido unas cuantas dudas, soy muy novato pero tengo ganas de aprender. Mi código es el siguiente:

import tkinter, matplotlib, numpy
from tkinter import *
from tkinter import font
import tkinter as tk
import os, sys, re
from string import capwords


class inicio:      
   def __init__(self, parent):
       self.inicio = parent                    
       self.inicio.geometry("300x210")
       self.inicio.config(bg="lightblue")
       self.inicio.title("Ventana de inicio")

       frame = Frame(self.inicio, bg="blue")
       frame.grid(row="0", column="0", columnspan="4", padx="10", pady="10")  
       
       self.lista = Listbox(frame, height="10")
       self.lista.grid(row="0", column="0", rowspan="2", padx="15", pady="10")
       por_defecto=open("por_defecto","w")
       por_defecto.write("Pepe" +"\n"+ "Pérez" +"\n")
       por_defecto.close()
       self.lista.insert(END,"por_defecto")
             
       scroll = Scrollbar(frame, borderwidth=3, orient=VERTICAL, command=self.lista.yview)
       scroll.grid(row="0", column="1", rowspan="2", pady="10", sticky=N+S)
     
       boton33 = Button(frame, text="Nueva", bg="#778899", font="georgia 10 bold", fg="white", heigh=2, width=7, padx="5", command=self.nuevo)
       boton33.grid(row="0", column="2", padx="10", pady="5")
       boton43 = Button(frame, text="Borrar", bg="#778899", font="georgia 10 bold", fg="white", heigh=2, width=7, padx="5", command= self.borrar)
       boton43.grid(row="1", column="2", padx="10", pady="5")
   

   def borrar(self):
       try:
 
           index = self.lista.curselection()[0]
           self.lista.delete(index)
           print (index)
           os.remove('{0}.txt'.format(index))
       except IndexError:
            pass        
   

 
   def nuevo(self):
       ventana1=tk.Toplevel(root)
       def guardar():
         
           fich = open('{0}.txt'.format(Para_guardar.get()), 'w')
   
           nombre=capwords(Nombre.get())
           apellidos=capwords(Apellidos.get())
           para_guardar=capwords(Para_guardar.get())
           
           fich.write(nombre+"\n"+apellidos+"\n")
           fich.close()
         
           #este fichero "listbox.txt" es para guardar la lista de elementos guardados
           self.lista.insert(END, Para_guardar.get())
           lb3 = open("listbox.txt","a")
           lb3.write(para_guardar+"\n")
           lb3.close()
         
           ventana1.destroy()
           
       text1=Label(ventana1, text="DATOS", padx="5", font="georgia 10 bold", fg="black")
       text1.grid(row="0", column="0", columnspan="4", padx="7", pady="5", sticky="WE")
       
       nombre=Label(ventana1, text="Nombre: ", font="georgia 8 bold", fg="black")
       nombre.grid(row="1", column="0", columnspan="2", padx="7", pady="5", sticky="WE")
       Nombre=StringVar()
       Nombre.set("0.0")
       Nombre_entry=Entry(ventana1, width="5", textvariable=Nombre)
       Nombre_entry.grid(row="1", column="2", columnspan="2", padx="7", pady="5", sticky="WE")
       
       apellidos=Label(ventana1, text="Apellidos: ", padx="5", font="georgia 8 bold", fg="black")
       apellidos.grid(row="2", column="0", columnspan="2", padx="7", pady="5", sticky="WE")
       Apellidos=StringVar()
       Apellidos.set("0.0")
       Apellidos_entry=Entry(ventana1, width="5", textvariable=Apellidos)
       Apellidos_entry.grid(row="2", column="2", columnspan="2", padx="7", pady="5", sticky="WE")        
 
       Para_guardar = StringVar()
       Para_guardar.set("Guardar como:")
       Para_guardar_entry = Entry(ventana1, width="5", textvariable = Para_guardar)
       Para_guardar_entry.grid(row="3", column="0", columnspan="2", sticky="WE", pady="5")
       boton = Button(ventana1, text="Guardar", command=guardar)
       boton.grid(row="3", column="3", padx="7", pady="5", sticky=W)
       
root = Tk()
programa = inicio(root)
root.mainloop()


Me gustaría saber como hago primero para eliminar (clickando en el boton correspondiente) los archivos txt que se crean, según el nombre que selecione en la Listbox.
Por otro lado, cuando guardo los nombres en el Listbox y cierro la aplicación, al volver a iniciarla me han desaparecido. Me gustaría saber cómo hago para que no se borren de una vez para otra.

Muchas gracias por todo




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...