Skip to content
Snippets Groups Projects
Commit e8d52bcc authored by Loloncio's avatar Loloncio
Browse files

Vista defecto y mejoras de resize

Añadida la vista por defecto donde tenemos 3 zonas, en la primera tenemos una lista de permisos, al pulsar en uno, aparecera información de este a la derecha. En la segunda zona tenemos una lista de grupos de permisos, al pulsar en uno saldrán los permisos asociados a ese grupo. Finalmente, tenemos una lista de protection level, al pulsar uno, saldrán los permisos con ese protection level a la derecha.

La mejora de resize es que ahora solo se actualiza el tamaño de los objetos si se detecta un cambio en el tamaño de la propia ventana y no con otros eventos.
parent 01d1feaf
Branches
No related tags found
No related merge requests found
# Autor: Alejandro de la Cruz Garijo
import tkinter as tk
import customtkinter as ctk
class defecto(ctk.CTkToplevel):
# Algunas variables globales para los parametros que pasaremos a la siguiente vista,
# la opción que se ha seleccionado y una etiqueta de errores
HEIGHT = 720
WIDTH = 1280
def __init__(self, parent, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.parent = parent
# Ajustes de ventana principal
self.protocol("WM_DELETE_WINDOW", self.cerrar)
self.parent.withdraw()
self.geometry("1280x720")
self.minsize(width=1280,height=720)
self.configure(fg_color = "#1E1E1E")
frames, scrolls, permisos, grupos, protection, labels = [], [], [], [], [], []
textoPermisos = [
"Permiso1",
"Permiso2",
"Permiso3",
"Permiso4",
"Permiso5",
"Permiso6",
"Permiso7",
"Permiso8",
"Permiso9",
]
textoGrupos = [
"Grupo1",
"Grupo2",
"Grupo3",
"Grupo4",
"Grupo5",
"Grupo6",
]
textoProtection =[
"Normal",
"Dangerous",
"Signature"
]
textFont = ctk.CTkFont(family="Inter", size=30, weight="normal")
for i in range(3):
frames.append(ctk.CTkFrame(master=self,fg_color="#504F4F", corner_radius=10, width = self.WIDTH-10))
for i in range(3):
scrolls.append(ctk.CTkScrollableFrame(master=frames[i],fg_color="#504F4F", corner_radius= 10, width = self.WIDTH/2-20))
frames.append(ctk.CTkFrame(master=frames[i],fg_color="#504F4F", corner_radius= 10, width = self.WIDTH/2-20))
for i in range(3):
labels.append(ctk.CTkLabel(frames[i+3], text="", text_color="white", fg_color="#504F4F",
corner_radius=10, font=textFont))
for i in textoPermisos:
permisos.append(ctk.CTkButton(scrolls[0], text=i, text_color="white", fg_color="#504F4F",
font=textFont, corner_radius= 10,
command=lambda permiso = i, label = labels[0]: self.permisoClick(permiso, label)))
for i in textoGrupos:
grupos.append(ctk.CTkButton(scrolls[1], text=i, text_color="white", fg_color="#504F4F",
font=textFont, corner_radius= 10,
command=lambda grupo = i, label = labels[1]: self.grupoClick(grupo,label)))
for i in textoProtection:
protection.append(ctk.CTkButton(scrolls[2], text=i, text_color="white", fg_color="#504F4F",
font=textFont, corner_radius= 10,
command=lambda protection = i, label = labels[2]: self.protectionClick(protection,label)))
for i in range(3):
frames[i].pack(padx=5, pady=5, fill="x",expand = True)
for i in range(3):
scrolls[i].grid(row = 0, column=0, padx = 5, sticky="e")
frames[i+3].grid(row = 0, column=1,padx = 5, sticky="w")
for permiso in permisos:
permiso.pack(fill="x", padx = 3)
for grupo in grupos:
grupo.pack(fill="x", padx = 3)
for level in protection:
level.pack(fill="x", padx = 3)
for label in labels:
label.pack(fill="x", padx = 3, sticky="nw")
self.bind("<Configure>", lambda event, frames = frames, scrolls = scrolls,
self=self: self.ajustarTamanos(self, frames, scrolls))
def cerrar(self):
self.parent.destroy()
def volver(self):
self.parent.deiconify()
self.destroy()
def permisoClick(self, permiso, label):
label.configure(text=permiso)
print(permiso)
return
def grupoClick(self, grupo, label):
label.configure(text=grupo)
print(grupo)
return
def protectionClick(self, protection, label):
label.configure(text=protection)
print(protection)
return
# Función para ajustar los tamaños al cambiar el tamaño de la ventana
def ajustarTamanos(self, event, frames, scrolls):
anchoVentana = self.winfo_width() # Ancho de la ventana
altoVentana = self.winfo_height() # Alto de la ventana
if(self.HEIGHT != altoVentana or self.WIDTH != anchoVentana):
self.HEIGHT = altoVentana
self.WIDTH = anchoVentana
for i in range(3):
frames[i].configure(width = anchoVentana-10,height=altoVentana/3-10)
frames[i+3].configure(width = (anchoVentana/2)-20,height=altoVentana/3-10)
scrolls[i].configure(width = (anchoVentana/2)-20,height=altoVentana/3-10)
# Actualiza la ventana
self.update_idletasks()
\ No newline at end of file
# Última vista de App-Perm, aquí vemos el progreso de creación de AndroidManifest.xml
# su compilación, instalación y, finalmente, el resultado de dicha instlación.
# Autor: Alejandro de la Cruz Garijo
import tkinter as tk
import customtkinter as ctk
class final(ctk.CTkToplevel):
def __init__(self, parent, opt, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.parent = parent
# Ajustes de ventana principal
self.protocol("WM_DELETE_WINDOW", self.cerrar)
self.parent.withdraw()
self.geometry("1280x720")
self.minsize(width=1280,height=720)
\ No newline at end of file
......@@ -14,6 +14,8 @@ class listas(ctk.CTkToplevel):
PROTECTION = ""
OPT = 0
ERRORES = None
HEIGHT = None
WIDTH = None
def __init__(self, parent, opt, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.parent = parent
......@@ -217,7 +219,9 @@ class listas(ctk.CTkToplevel):
def ajustarTamanos(self, event, etiquetas, listas, confirmacion, volver):
anchoVentana = self.winfo_width() # Ancho de la ventana
altoVentana = self.winfo_height() # Alto de la ventana
if(self.HEIGHT != altoVentana or self.WIDTH != anchoVentana):
self.HEIGHT = altoVentana
self.WIDTH = anchoVentana
for i, j in zip(etiquetas, listas):
i.configure(width=max(100, anchoVentana // 3 - 6))
j.configure(width=max(100, anchoVentana // 3 - 30))
......
......@@ -6,6 +6,7 @@
import tkinter as tk
import customtkinter as ctk
from Listas import listas
from Defecto import defecto
class mainWindow(ctk.CTkFrame):
......@@ -57,7 +58,7 @@ class mainWindow(ctk.CTkFrame):
# Funciones para los botones
def defecto(self):
print("Defecto")
defecto(self.parent)
return
def cambioGrupo(self):
self.optList.set(1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment