class Interfaz(object): def __init__(self, root): self.root = root self.root.title("Programa base de datos Anla") self.canvas = tk.Canvas(self.root, height = 400, width =700) self.canvas.pack() self.imagen_fondo = PhotoImage(file='fondo.png') self.frame = tk.Frame(self.root, bg = None ) #"#20CDC8" self.frame.place(relheight = 1, relwidth= 1) self.imagen_Label = tk.Label(self.frame, image= self.imagen_fondo) self.imagen_Label.place(relheight = 1, relwidth= 1) #self.desplegable = ttk.Combobox(self.frame, height = 10, textvariable = StringVar, values = self.combo()) #self.desplegable.place(relheight = 0.05, relwidth = 0.65, relx = 0.2, rely = 0.08) self.autocompletar = AutocompleteCombobox(self.frame, completevalues = self.combo()) self.autocompletar.place(relheight = 0.05, relwidth = 0.65, relx = 0.2, rely = 0.08) self.boton = tk.Button(self.frame, text = "Agregar Componente", bg = "#4CE37C", bd = 0.5, command = self.adicionar_componentes) self.boton.place(relheight = 0.07, relwidth = 0.18, relx = 0.018, rely = 0.08) #self.new_frame = tk.Frame(self.frame, bd = 2, bg = "white") #self.new_frame.place(relheight = 0.65, relwidth = 0.7, relx = 0.15, rely = 0.3) self.style = ttk.Style() self.style.configure("Treeview.Heading", font=("Helvetica", 12, "bold")) self.arbol = ttk.Treeview(self.frame, height = 5) self.arbol.place(relheight = 0.65, relwidth = 0.7, relx = 0.15, rely = 0.25) self.arbol.heading('#0', text = 'COMPONENTES SELECCIONADOS', anchor = CENTER) self.fuente = font.Font(family='Helvetica', size=10, weight='bold') self.boton_delete = tk.Button(self.frame, text = "Eliminar componente", command = self.eliminar_seleccion) self.boton_delete.place(relheight = 0.07, relwidth = 0.18) self.boton_delete_all = tk.Button(self.frame, text = "Eliminar todo", command = self.eliminar_todo) self.boton_delete_all.place(relheight = 0.07, relwidth = 0.18, relx = 0.5, rely = 0.5) self.mensaje = tk.Label(self.frame, text = "", anchor = "center", font = self.fuente, bg = "#20CDC8" ) self.mensaje.place(relx = 0.2, rely = 0.15) def combo(self): conn = sqlite3.connect("anla.db") c = conn.cursor() lista_nueva = c.execute("SELECT DISTINCT COMPONENTE FROM diccionario_nuevo WHERE CÓDIGO != 'T' ORDER BY COMPONENTE") vacio = [] for componente in lista_nueva: vacio.append(componente[0]) return vacio def adicionar_componentes(self): add = self.autocompletar.get() if add not in self.combo(): self.mensaje = tk.Label(self.frame, text = "", anchor = "center", font = self.fuente, bg = "#20CDC8" ) self.mensaje["text"] = "{} no es un componente".format(add) self.mensaje.place(relx = 0.2, rely = 0.15) return self.mensaje else: return self.arbol.insert('', 0, text = add, value = ""), self.mensaje.destroy() def eliminar_seleccion(self): selected_item = self.arbol.selection() try: self.arbol.delete(selected_item) self.mensaje_seleccion.destroy() except: self.mensaje_seleccion = tk.Label(self.frame, text = "Seleccione un componente", font = self.fuente) self.mensaje_seleccion.place(relx = 0.8, rely = 0.9, anchor = "se") def eliminar_todo(self): for componente in self.arbol.get_children(): eliminar = self.arbol.delete(componente) return eliminar def otra_cosa(self): self.otra_ventana = Toplevel() self.otra_ventana.title("Resultados") self.otro_canvas = Canvas(self.otra_ventana, height = 400, width =700) self.otro_canvas.pack() self.imagen_otro = PhotoImage(file='cielo.png') self.imagen_Label_otro = tk.Label(self.otra_ventana, image= self.imagen_otro) self.imagen_Label_otro.place(relheight = 1, relwidth= 1) conn = sqlite3.connect("anla.db") c = conn.cursor() for componente in self.arbol.get_children(): c_individual = self.arbol.item(componente)["text"] if c_individual == "ANALISIS_RIESGO": anali_riesgo = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'ANALISIS_RIESGO' ") print(anali_riesgo) elif c_individual == "AREAS_CONSER_PROTEC_AMBIENTAL": area_conservacion = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'AREAS_CONSER_PROTEC_AMBIENTAL'") print(area_conservacion) elif c_individual == "AREAS_REGLAMENTACION_ESPECIAL": areas_reglamentacion = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'AREAS_REGLAMENTACION_ESPECIAL'") print(areas_reglamentacion) elif c_individual == "ARQUEOLOGIA": arqueologia = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'ARQUEOLOGIA'") print(arqueologia) elif c_individual == "ATMOSFERA": atmosfera = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'ATMOSFERA' OR Medio = 'ATMOSFERA'") print(atmosfera) elif c_individual == "BIOTICO_CONTI_COSTE": biotico = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'BIOTICO_CONTI_COSTE' or Medio = 'BIOTICO_CONTI_COSTE'") print(biotico) elif c_individual == "CLIMA": clima = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'CLIMA' or Medio = 'CLIMA'") print(clima) elif c_individual == "COMPENSACION": compensacion = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'COMPENSACION' OR Medio = 'COMPENSACION'") print(compensacion) elif c_individual == "CONTINGENCIAS": contingencias = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'CONTINGENCIAS' OR Medio = 'CONTINGENCIAS'") print(contingencias) elif c_individual == "ECONOMICO": economico = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'ECONOMICO'") print(economico) elif c_individual == "GEOLOGIA": geologia = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'GEOLOGIA' OR Medio = 'GEOLOGIA'") print(geologia) elif c_individual == "GEOMORFOLOGIA": geomorfologia = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'GEOMORFOLOGIA'") print(geomorfologia) elif c_individual == "GEOTECNIA": geotecnia = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'GEOTECNIA'") print(geotecnia) elif c_individual == "GESTION_RIESGO": gestion_riesgo = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'GESTION_RIESGO'") print(gestion_riesgo) elif c_individual == "HIDROGEOLOGIA": hidrogeologia = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'HIDROGEOLOGIA' OR Medio = 'HIDROGEOLOGIA'") print(hidrogeologia) elif c_individual == "HIDROLOGIA": hidrologia = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'HIDROLOGIA' OR Medio = 'HIDROLOGIA'") print(hidrologia) elif c_individual == "INVERSION_1_POR_CIENTO": inversion1 = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'INVERSION_1_POR_CIENTO' OR Medio = 'INVERSION_1_POR_CIENTO'") print(inversion1) elif c_individual == "MARINO": marino = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'MARINO' OR Medio = 'MARINO'") print(marino) elif c_individual == "PAISAJE": paisaje = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'PAISAJE'") elif c_individual == "POLITICO_ADMINISTRATIVO": politico = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'POLITICO_ADMINISTRATIVO' Medio = 'POLITICO_ADMINISTRATIVO'") print(politico) elif c_individual == "PROYECTO": proyecto = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'PROYECTO' OR Medio = 'PROYECTO'") print(proyecto) elif c_individual == "SOCIOCULTURAL": sociocultural = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'SOCIOCULTURAL'") print(sociocultural) elif c_individual == "SUELOS": suelos = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'SUELOS' OR Medio = 'SUELOS'") print(suelos) elif c_individual == "ZONIFICACION": zonificacion = c.execute("SELECT DISTINCT CAPAS, CÓDIGO FROM diccionario_nuevo WHERE COMPONENTE = 'ZONIFICACION'") print(zonificacion) else: pass
class Interfaz(object): """ Programa para la filtración de bases de datos SQL, la personalización a través de una interfaz gráfica y la exportación de esos resultados en HTML""" def __init__( self, root): #Widgets que conformarán la interfaz gráfica del programa. self.root = root self.root.title("Programa base de datos Anla") self.root.iconbitmap(r'icono.ico') self.canvas = tk.Canvas(self.root, height=500, width=1000) self.canvas.pack() self.imagen_fondo = PhotoImage(file='montaña.png') self.frame = tk.Frame(self.root, bg=None) #"#20CDC8" self.frame.place(relheight=1, relwidth=1) self.imagen_Label = tk.Label(self.frame, image=self.imagen_fondo) self.imagen_Label.place(relheight=1, relwidth=1) self.autocompletar = AutocompleteCombobox(self.frame, completevalues=self.combo()) self.autocompletar.place(relheight=0.07, relwidth=0.65, relx=0.2, rely=0.08) self.boton = tk.Button(self.frame, text="Agregar Componente", relief="flat", fg="#FFDBA9", bg="#578FBE", font=("Helvetica", 10, "bold"), bd=1, command=self.adicionar_componentes) self.boton.place(relheight=0.07, relwidth=0.18, relx=0.018, rely=0.08) self.style = ttk.Style() self.style.configure("Treeview.Heading", font=("Helvetica", 12, "bold")) self.style.configure("mystyle.Treeview", highlightthickness=0, bd=0, font=('Helvetica', 11)) # Modify the font of the body self.arbol = ttk.Treeview(self.frame, height=5, style="mystyle.Treeview") self.arbol.place(relheight=0.65, relwidth=0.7, relx=0.15, rely=0.25) self.arbol.heading('#0', text='COMPONENTES SELECCIONADOS', anchor=CENTER) self.fuente = font.Font(family='Helvetica', size=10, weight='bold') self.boton_delete = tk.Button(self.frame, text="Eliminar componente", bg="#FFC16B", fg="#4F3F2A", relief="flat", font=("Helvetica", 10, "bold"), command=self.eliminar_seleccion) self.boton_delete.place(relheight=0.07, relwidth=0.15, relx=0.15, rely=0.92) self.boton_delete_all = tk.Button(self.frame, text="Eliminar todo", relief="flat", bg="#FF976B", fg="#4F3F2A", font=("Helvetica", 10, "bold"), command=self.eliminar_todo) self.boton_delete_all.place(relheight=0.07, relwidth=0.14, relx=0.72, rely=0.92) self.mensaje = tk.Label(self.frame, text="", anchor="center", font=self.fuente, bg="#20CDC8") self.mensaje.place(relx=0.2, rely=0.15) self.boton_prueba = tk.Button(self.frame, text="Conoce tus requisitos", relief="flat", bg="#52C496", fg="#4F3F2A", font=("Helvetica", 10, "bold"), command=self.otra_cosa) self.boton_prueba.place(relheight=0.07, relwidth=0.16, relx=0.43, rely=0.92) def combo( self ): #Formar una lista de los elementos seleccionados en la tabla de la base de datos #Función para desplegar los datos en un Autocomplete Combobox conn = sqlite3.connect("anla.db") c = conn.cursor() lista_nueva = c.execute( "SELECT DISTINCT COMPONENTE FROM diccionario_nuevo WHERE CÓDIGO != 'T' ORDER BY COMPONENTE" ) vacio = [] for componente in lista_nueva: vacio.append(componente[0]) return vacio def adicionar_componentes( self ): #Función que despliega los elementos seleccionados del Combobox #La información es desplegada en un Treeview widget add = self.autocompletar.get() if add not in self.combo(): self.mensaje = tk.Label(self.frame, text="", anchor="center", font=self.fuente, bg="#20CDC8") self.mensaje["text"] = "{} no es un componente".format(add) self.mensaje.place(relx=0.2, rely=0.15) return self.mensaje else: return self.arbol.insert('', tk.END, text=add, value=""), self.mensaje.destroy() def eliminar_seleccion( self): #Función para el botón de eliminar la selección una por una selected_item = self.arbol.selection() try: self.arbol.delete(selected_item) self.mensaje_seleccion.destroy() except: self.mensaje_seleccion = tk.Label(self.frame, text="Seleccione un componente", font=self.fuente, bg="#20CDC8") self.mensaje_seleccion.place(relx=0.8, rely=0.17) def eliminar_todo( self ): #Botón para eliminar todas las selecciones presentes en el Treeview for componente in self.arbol.get_children(): eliminar = self.arbol.delete(componente) return eliminar def otra_cosa( self ): #Crea una ventana en donde se desplegarán los resultados de la selección hecha self.otra_ventana = Toplevel() self.otra_ventana.title("Resultados") self.otra_ventana.iconbitmap(r'icono.ico') self.otro_canvas = Canvas(self.otra_ventana, height=600, width=1000) self.otro_canvas.pack() self.imagen_otro = PhotoImage(file='rosa.png') self.imagen_Label_otro = tk.Label(self.otra_ventana, image=self.imagen_otro) self.imagen_Label_otro.place(relheight=1, relwidth=1) self.arbol_otro = ttk.Treeview(self.otra_ventana, height=20, column=("column1", "column2", "column3"), show='headings') self.arbol_otro.column("#0", width=500, stretch=0, anchor="w") self.arbol_otro.place(relheight=0.65, relwidth=0.7, relx=0.15, rely=0.25) self.arbol_otro.heading("column1", text="Capas geográficas") self.arbol_otro.heading("column2", text="Tipo de información") self.arbol_otro.heading("column3", text="Geometría") self.boton_exportar = tk.Button(self.otra_ventana, text="Exportar", command=self.exportar) self.boton_exportar.place(relheight=0.07, relwidth=0.15, relx=0.15, rely=0.92) conn = sqlite3.connect("anla.db") c = conn.cursor() for componente in self.arbol.get_children( ): #Filtra la información de la tabla, de acuerdo a la selección hecha. c_individual = self.arbol.item(componente)["text"] insert = self.arbol_otro.insert("", tk.END, values=c_individual) if c_individual == "ANALISIS_RIESGO": anali_riesgo = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'ANALISIS_RIESGO' " ) for i in anali_riesgo.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "AREAS_CONSER_PROTEC_AMBIENTAL": area_conservacion = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'AREAS_CONSER_PROTEC_AMBIENTAL'" ) for i in area_conservacion.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "AREAS_REGLAMENTACION_ESPECIAL": areas_reglamentacion = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'AREAS_REGLAMENTACION_ESPECIAL'" ) for i in areas_reglamentacion.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "ARQUEOLOGIA": arqueologia = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'ARQUEOLOGIA'" ) for i in arqueologia.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "ATMOSFERA": atmosfera = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'ATMOSFERA' OR Medio = 'ATMOSFERA'" ) for i in atmosfera.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "BIOTICO_CONTI_COSTE": biotico = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'BIOTICO_CONTI_COSTE' or Medio = 'BIOTICO_CONTI_COSTE'" ) for i in biotico.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "CLIMA": clima = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'CLIMA' or Medio = 'CLIMA'" ) for i in clima.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "COMPENSACION": compensacion = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'COMPENSACION' OR Medio = 'COMPENSACION'" ) for i in compensacion.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "CONTINGENCIAS": contingencias = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'CONTINGENCIAS' OR Medio = 'CONTINGENCIAS'" ) for i in contingencias.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "ECONOMICO": economico = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'ECONOMICO'" ) for i in economico.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "GEOLOGIA": geologia = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'GEOLOGIA' OR Medio = 'GEOLOGIA'" ) for i in geologia.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "GEOMORFOLOGIA": geomorfologia = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'GEOMORFOLOGIA'" ) for i in geomorfologia.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "GEOTECNIA": geotecnia = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'GEOTECNIA'" ) for i in geotecnia.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "GESTION_RIESGO": gestion_riesgo = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'GESTION_RIESGO'" ) for i in gestion_riesgo.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "HIDROGEOLOGIA": hidrogeologia = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'HIDROGEOLOGIA' OR Medio = 'HIDROGEOLOGIA'" ) for i in hidrogeologia.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "HIDROLOGIA": hidrologia = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'HIDROLOGIA' OR Medio = 'HIDROLOGIA'" ) for i in hidrologia.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "INVERSION_1_POR_CIENTO": inversion1 = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'INVERSION_1_POR_CIENTO' OR Medio = 'INVERSION_1_POR_CIENTO'" ) for i in inversion1.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "MARINO": marino = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'MARINO' OR Medio = 'MARINO'" ) for i in marino.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "PAISAJE": paisaje = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'PAISAJE'" ) for i in paisaje.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "POLITICO_ADMINISTRATIVO ": politico = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'POLITICO_ADMINISTRATIVO ' OR Medio = 'POLITICO_ADMINISTRATIVO'" ) for i in politico.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "PROYECTO": proyecto = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'PROYECTO' OR Medio = 'PROYECTO'" ) for i in proyecto.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "SOCIOCULTURAL": sociocultural = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'SOCIOCULTURAL'" ) for i in sociocultural.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "SUELOS": suelos = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'SUELOS' OR Medio = 'SUELOS'" ) for i in suelos.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 elif c_individual == "ZONIFICACION": zonificacion = c.execute( "SELECT DISTINCT CAPAS, CÓDIGO, GEOMETRÍA FROM diccionario_nuevo WHERE COMPONENTE = 'ZONIFICACION'" ) for i in zonificacion.fetchall(): insert_2 = self.arbol_otro.insert(insert, tk.END, values=(i[0], i[1], i[2]), open=True) insert_2 else: pass def export_pdf(self): #Extrae la información del Treeview en un Dataframe vacio = [] valores = self.arbol_otro.get_children() for individuos in valores: c_individual = self.arbol_otro.item(individuos)["values"] vacio.append(c_individual) for child in self.arbol_otro.get_children(individuos): data = self.arbol_otro.item(child)["values"] vacio.append(data) df = pd.DataFrame( vacio, columns=["Capas geográficas", "Tipo de información", "Geometria"]) mask = df.applymap(lambda x: x is None) cols = df.columns[(mask).any()] for col in df[cols]: df.loc[mask[col], col] = '' return df def boton_pdf(self): #Devuelve la información como una tabla HTML df_2 = self.export_pdf() tabla = df_2.to_html("Resultados.html", justify="center", index=False) return tabla def exportar(self): #Exporta la selección return self.boton_pdf()