Mensajes: 155 
	Temas: 57 
	Registro en: Jan 2018
	
 Reputación: 
 0
	 
 
	
		
		
		22-03-2022, 06:15 PM 
(Última modificación: 24-03-2022, 07:54 PM por Francisco.)
		
	 
	
		Hola Francisco, ¿Cómo estas?, hola gente.- 
Estoy un poco lidiado con este tema y x mas que busco en tu blog, 
practico, pero no logro el resultado esperado.- 
Te comento(se entiende mejor en el recorte de pantalla) con un botón 
tengo que borrar un ítem del treeview pero no se como buscarlo, 
¿ cómo lo hago?.- 
Desde ya gracias porque confío mucho en tus respuestas.- 
 https://postimg.cc/gnvXR5v5
Slds. Daniel ☕☕☕
 
 
Si es algo similar a esto, ya esta, me lo habías enseñado en otro hilo, perdón.-
 Código: def borrar(mv, parametros): 
    try: 
        item = mv.selection()[0] 
    except IndexError: 
        messagebox.showwarning(message="Debe seleccionar un elemento.", 
            title="No hay selección") 
    else: 
        mv.delete(item)
    
Slds. Daniel ☕☕☕
	  
	
	
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
 
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Hola, Daniel, ¿cómo estás? 
 
¿Pudiste solucionarlo con ese código? Eso serviría para borrar el elemento seleccionado. Si querés eliminar algún otro item, tenés que guardar previamente la referencia al mismo al momento de insertarlo. La función insert() del treeview devuelve una cadena que funciona como referencia a cada item que se inserta, y es precisamente lo que necesita el método delete() para borrar un item. Una práctica adecuada sería, luego de cada insert(), agregar el ID del item a una lista que refleje exactamente los ID de todos los items en el treeview. 
 
Saludos
	 
	
	
	
	
 
 
	
	
	
		
	Mensajes: 6 
	Temas: 2 
	Registro en: Mar 2022
	
 Reputación: 
 0
	 
 
	
		
		
		23-03-2022, 09:10 PM 
(Última modificación: 23-03-2022, 10:33 PM por Francisco.)
		
	 
	
		Hola. 
Buscando nformacon para mi problema, me encontre con esto que me llamo la atencion. 
Si no es un atrevimiento de mi parte y con el afan de ayudar, tengo un programa que hace busquedas en una tabla (TREEVIEW). 
Aqui te lo pongo (pego) y si deseas alguna aclaratoria, estoy a la orden y con mucho gusto.
 Código: ## Esta funcion verifica si el concepto que se trata de incluir ya existe en la tabla 
## (TREEVIEW), de ser asi se procede a modificar sus datos 
def elconceptoexisteenlatabla (concepto): 
    global tabla, secuencia 
    if secuencia == 0: return False, 0  ## la tabla esta vacia 
    for item in tabla.get_children(): 
        valores = tabla.item(item)['values'] 
        # print ('item:',item,'valores:',valores) 
        con = tabla.item(item,'text')  ##  str(valores[0]).rjust(3,'0') 
        # print ('elconceptoexisteenlatabla:',con,type(con),'concepto:',concepto) 
        if con == concepto: 
            # print ('se consiguio el concepto',con,concepto) 
            return True, item 
    return False, 0
 
Espero que te ayude. 
Un saludo
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 155 
	Temas: 57 
	Registro en: Jan 2018
	
 Reputación: 
 0
	 
 
	
	
		Cita:¿Pudiste solucionarlo con ese código? Eso serviría para borrar el elemento seleccionado. 
Si querés eliminar algún otro item, tenés que guardar previamente la referencia al mismo 
al momento de insertarlo. La función insert() del treeview devuelve una cadena que 
funciona como referencia a cada item que se inserta, y es precisamente lo que necesita 
el método delete() para borrar un item. Una práctica adecuada sería, luego de cada insert(), 
agregar el ID del item a una lista que refleje exactamente los ID de todos los items en el treeview. 
    
No te darás una idea del barullo que tengo con este tema que hace mas de una semana 
que me da “vueltas” en la cabeza y no se como preguntarte.- 
Lo voy a intentar,  si te parece que cometo una infantilismo discúlpame.- 
Si yo tengo una base de datos con 100 registros correlativos(o no) seguramente me 
resultara un tanto fácil encontrar el registro deseado, pero si tengo un treeview y esto 
como referencia, ¿me podes decir como lo busco?.- 
 
--------------------------------- 
I001      I00B      I015 
I00C      I002      I016  
I00D      I003      I017 
I00E      I004      I018 
I00F      I005      I019 
I010      I006      I01A 
I011      I007      I01B 
I012      I008      I01C 
I013      I009      I01D 
I014      I00A      I01E 
---------------------------------
 
Slds. Daniel ☕☕☕
	  
	
	
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
 
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Hola, Daniel. 
Si en la lista tenés solo guardado el ID, no va a ser posible realizar una búsqueda. Deberías guardar, además del ID, también el resto de los datos. Pero eso implicaría duplicar los datos en memoria (porque los tendrías en tu lista y a su vez Tk los tendría en la memoria del treeview). La solución que dejó Francisco (el otro Francisco) me parece más adecuada. Con un bucle recorrés los items hasta encontrar el que estás buscando. Por ejemplo, si hacés una búsqueda por fecha, y querés borrar todos los items con fecha 28/04/2021, deberías hacer algo así:
 Código: for item_id in treeview.get_children(): 
    columnas = treeview.item(item_id)["values"] 
    if columnas[0] == "28/04/2021": 
        treeview.delete(item_id)
 
Saludos
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 155 
	Temas: 57 
	Registro en: Jan 2018
	
 Reputación: 
 0
	 
 
	
	
		Hola, buen día para todos. 
Gracias Francisco, es eso exactamente lo que buscaba(lo guarde en un cofre) .- 
Justamente en el programa que estoy haciendo hay una búsqueda y como 
desconocía esta manera la efectuaba desde el .txt(BD) directamente.- 
Dejo esta práctica por si alguno le resulta útil…
 Código: import tkinter as tk 
from tkinter import ttk 
from tkinter import * 
import codecs 
from functools import partial 
import time 
 
def centrarVentana(ventana): 
    ancho_ventana = 550 
    alto_ventana = 500 
 
    x_ventana = ventana.winfo_screenwidth() // 2 - ancho_ventana // 2 
    y_ventana = ventana.winfo_screenheight() // 2 - alto_ventana // 2 
 
    posicion = str(ancho_ventana) + "x" + str(alto_ventana) + "+" + str(x_ventana) + "+" + str(y_ventana) 
    ventana.geometry(posicion) 
 
    ventana.resizable(0,0) 
 
def crearTrw(registros): 
    with codecs.open('BDsuper.txt', 'r', encoding='utf-8') as archivo: 
        for linea in archivo: 
            tmpLinea = linea.strip() 
            linea = tmpLinea.split(',') 
            registros.append(linea) 
            
    return registros 
 
def busqueda(mv): 
    fInicio = time.strptime("28/04/2021", "%d/%m/%Y") 
    fTope = time.strptime("28/05/2021", "%d/%m/%Y")    
    for item_id in mv.get_children(): 
        columnas = mv.item(item_id)["values"] 
        fmv = time.strptime(columnas[0], "%d/%m/%Y") 
        if fmv >= fInicio and  fmv <= fTope: 
            final = f"{columnas[0] } {columnas[1]} {columnas[2]}"    
            print(final) 
 
 
def main():    
    root = tk.Tk() 
    root.title(" Cuenta corriente del Súper.") 
    centrarVentana(root) 
 
    # Creando las columnas. 
    mv = ttk.Treeview(root, columns=("col1", "col2", "col3")) 
    mv.column("#0", width=6, anchor=SE) 
    mv.column("col1", width=10, anchor=CENTER) 
    mv.column("col2", width=50, anchor=NW) 
    mv.column("col3", width=10, anchor=CENTER) 
 
    
    # Poniendo en nombre a las columnas. 
    mv.heading("#0", text="Código", anchor=CENTER) 
    mv.heading("col1", text="Fecha", anchor=CENTER) 
    mv.heading("col2", text="Descripción", anchor=CENTER) 
    mv.heading("col3", text="Monto", anchor=CENTER) 
 
    
    # Poner todos los registros en una lista. 
    registros = [] 
    crearTrw(registros) 
 
    # Poner todos los registros en el treeview.    
    for reg in registros: 
        item = mv.insert("", END, text=reg[0], values=(reg[1], reg[2], reg[3])) 
    registros.clear()    
    
    
    # posicionar el "Treeview" y creando el "Scrollbar". 
    ejscrollbar= ttk.Scrollbar(root,orient=VERTICAL,command=mv.yview) 
    ejscrollbar.pack(side='right',fill='y') 
    mv.configure(yscrollcommand=ejscrollbar.set) 
    mv.place(x=15, y=10, height=350,width=500) 
    
    
    # Botón <Buscar> 
    botonBuscar = ttk.Button(root, text="Buscar", 
        command=partial(busqueda, mv)) 
    botonBuscar.place(x=230, y=400, width=80, height=40) 
 
    mv.focus() 
    
    root.mainloop() 
 
main()
  
Slds. Daniel ☕☕☕
	  
	
	
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
 
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Excelente, Daniel. 
 
Saludos!
	 
	
	
	
	
 
 
	 
 |