[ Foro de Python ]

Treeview que no pr esenta los datos en una nueva Frame

18-Jun-2022 09:45
Alberto Moreno Gil
1 Respuestas

En la app que estoy haciendo he creado varios TreeViews que funcionan perfectamente; así como una frame adicional donde he instalado varios widgets y funciones que funcionan sin problemas. Pero cuando quiero crear un TreeView (tree3) en un contenedor / frame (miFrame3) adicional lo más que consigo es que me aparezca el encabezamiento de las columns y eso aunque empleo el mismo código (salvo en lo específico de la nueva frame /miFrame3) que funciona perfectamente en la raíz/master.

Si en la línea que está en negrita (la de insert…), pongo
insert(“ ”, 0, …) me aparece el encabezamieno de las columnas, pero no los datos de la BD;
pero si pongo
insert(“miFrame3”,0, …)
me dice que “miFrame3 es un Item no definido”, a pesar de que en mi opionión  sí que lo he definido antes, y no aparece ni encabezamiento ni datos de la BD. El problema es que no estoy incorporndo adecuadamente el Treeview en la nueva frame, pero he hecho mil probaturas y no me funciona ninguna.
Pregunto: ¿qué estoy haciendo mal? Muchas gracias. Este es el código con el que primero creo la nueva frame (miFrame3) y depues intento incorporar a la frame el Treeview (tree3)
def ordendia():  
  conn=sqlite3.connect('inversiones.db')
  cursorObj=conn.cursor()
  # tree3  en miFrame3
  global miFrame3
  miFrame3=Frame(raiz, width=880, height=500)
  miFrame3.pack(fill="both", expand=True)
  miFrame3.config(bg='light blue', relief="sunken", bd=25)
  lblOrdendia2=Label(miFrame3, text="Orden del día")
  lblOrdendia2.place(x=400, y=14)
  lblPdts1etapa=Label(miFrame3, text="PENDIENTES EN LA PRIMERA ETAPA”)
  lblPdts1etapa.place( x=300, y = 18 )  
   
  tree3=ttk.Treeview(miFrame3)
  registros=tree3.get_children()
  for elemento in registros:
     tree3.delete(elemento)
  try:
     cursorObj.execute("SELECT * FROM remesas WHERE  (etapa = '1' AND situac=’P’)
     for row in cursorObj:
       tree3.insert("miFrame3", 0, text=row[0], values=(row[1], row[4}, row[5], row[3], row[6]))
  except:
     pass
 
tree3=ttk.Treeview(height=20, columns=('#0', '#1', '#4','#5',’#3’,’#6’)
  tree3.place(x=0, y=200)
  tree3.column('#1', width=45)
  tree3.heading('#1', text="Etapa",anchor=CENTER)

  tree3.column('#2', width=65)  
  tree3.heading('#2', text="Inversor ",anchor=CENTER )  


  tree3.column('#4', width=120)
  tree3.heading('#4', text="Plataforma",anchor=CENTER )

  tree3.column('#5', width=120)  
  tree3.heading('#5', text="Banco ",anchor= E ) #

  tree3.column('#3', width=80)  
  tree3.heading('#3', text="Importe",anchor=CENTER )

  tree3.column('#6', width=100)
 tree3.heading('#6', text="Situac.", anchor=CENTER)


21-Jun-2022 10:56
Alberto Moreno Gil

Como no encuentro solución a lo que busco, he reorganizado lo que deseaba. La situación que se me presentaba era: En la frame raiz tengo creados dos Treeview con el mismo nombre (tree) que fucionaban bien aunque las condiciones que había puesto a la tabla eran distintas. Si les ponía a estos dos Treeviews distintos nombres me aparecían un Treeview debajo de otro. Creé una nueva frame (miFrame3) y en ella un Treeview (tree3). Ejecuto el programa y no aparece nada en miFrame3, pero en los encabezamientos de los Treeview de la raiz cambian a este nuevo Tw, un lío. ¿Por qué lo que hago en una frame independiente (miFrame3) tiene que afectar a lo que tengo en la rame master? Misterio. Actualmente he modificado los trees Tv que tengo en el la ventana master según lo que tengo definitido en miFrame3 y todos tancontentos. En miFrame3 sigue sin aparecer nada, pero sí en el raíz. Un lío al que no encuentro arreglo y abandono ya.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)