[ Foro de Python ]
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)
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.)