Created
May 10, 2022 22:54
-
-
Save carlosmmairena/f5b3f257ef8569aa4170a4d7f352259f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tkinter | |
from tkinter import CENTER, ttk | |
lista_matriculas = [] | |
ventana = tkinter.Tk() | |
ventana.geometry('500x500') | |
# etiqueta de mensaje | |
mensaje_lbl = tkinter.Label(ventana) | |
mensaje_lbl.grid(row=0, column=1) | |
# Nombre | |
nombre_lbl = tkinter.Label(ventana, text='Nombre') | |
nombre_lbl.grid(row=1, column=0) | |
nombre_txt = tkinter.Entry(ventana) | |
nombre_txt.grid(row=1, column=1) | |
# Carne | |
carne_lbl = tkinter.Label(ventana, text='Carné') | |
carne_lbl.grid(row=2, column=0) | |
carne_txt = tkinter.Entry(ventana) | |
carne_txt.grid(row=2, column=1) | |
# Fecha Nacimmiento | |
fecha_nacimiento_lbl = tkinter.Label(ventana, text='Fecha de nacimiento') | |
fecha_nacimiento_lbl.grid(row=3, column=0) | |
fecha_nacimiento_txt = tkinter.Entry(ventana) | |
fecha_nacimiento_txt.grid(row=3, column=1) | |
# Promedio | |
prom_lbl = tkinter.Label(ventana, text='Promedio general tras anterior') | |
prom_lbl.grid(row=4, column=0) | |
prom_txt = tkinter.Entry(ventana) | |
prom_txt.grid(row=4, column=1) | |
# Creditos | |
creditos_lbl = tkinter.Label(ventana, text='Créditos del semestre tras anterior') | |
creditos_lbl.grid(row=5, column=0) | |
creditos_txt = tkinter.Entry(ventana) | |
creditos_txt.grid(row=5, column=1) | |
# Carrera | |
carrera_lbl = tkinter.Label(ventana, text='Carrera') | |
carrera_lbl.grid(row=6, column=0) | |
carrera_txt = tkinter.Entry(ventana) | |
carrera_txt.grid(row=6, column=1) | |
# Importamos la tabla | |
tabla = ttk.Treeview(ventana, height=10, columns=[f"#{n}" for n in range(1, 8)]) | |
tabla.config(show='headings') | |
tabla.grid(row=10, column=1) | |
tabla.heading('#1', text='Nombre', anchor=CENTER) | |
tabla.heading('#2', text='Carne', anchor=CENTER) | |
tabla.heading('#3', text='Fecha Nacimiento', anchor=CENTER) | |
tabla.heading('#4', text='Promedio', anchor=CENTER) | |
tabla.heading('#5', text='Creditos', anchor=CENTER) | |
tabla.heading('#6', text='Carrera', anchor=CENTER) | |
tabla.heading('#7', text='Hora', anchor=CENTER) | |
######################################################### | |
def mostrar_tabla_matriculas(): | |
end = len(lista_matriculas) | |
for index in range(end): | |
try: | |
tabla.delete(index + 1) | |
tabla.insert(parent='', index='end', iid=(index + 1), text='', values=(lista_matriculas[index]['nombre'], lista_matriculas[index]['carne'], lista_matriculas[index]['fecha'], lista_matriculas[index]['prom'], lista_matriculas[index]['creditos'], lista_matriculas[index]['carrera'], lista_matriculas[index]['hora_matricula'])) | |
except: | |
tabla.insert(parent='', index='end', iid=(index + 1), text='', values=(lista_matriculas[index]['nombre'], lista_matriculas[index]['carne'], lista_matriculas[index]['fecha'], lista_matriculas[index]['prom'], lista_matriculas[index]['creditos'], lista_matriculas[index]['carrera'], lista_matriculas[index]['hora_matricula'])) | |
def organizar_espacios_matricula(): | |
indice_final = len(lista_matriculas) | |
for indice1 in range(indice_final - 1): | |
for indice2 in range(indice_final - indice1 - 1): | |
#promedio entre creditos | |
matricula = lista_matriculas[indice2] | |
matricula_siguiente = lista_matriculas[indice2 + 1] | |
lugar = calcular_lugar(matricula['prom'], matricula['creditos']) | |
lugar_siguiente = calcular_lugar(matricula_siguiente['prom'], matricula_siguiente['creditos']) | |
print('Calculando campo... PRIORIDAD LUGAR:', lugar) | |
print('Comparando con lugar_siguiente', lugar_siguiente) | |
if lugar > lugar_siguiente: | |
print('lugar > lugar_siguiente. Campo concedido a:', matricula['prom']) | |
elif lugar < lugar_siguiente: | |
print('lugar < lugar_siguiente. Campo concedido a:', matricula_siguiente['prom']) | |
lista_matriculas[indice2 + 1] = matricula | |
lista_matriculas[indice2] = matricula_siguiente | |
else: | |
if matricula['creditos'] > matricula_siguiente['creditos']: | |
print('credito1 > credito2. Campo concedido a:', matricula['prom']) | |
else: | |
print('credito1 < credito2. Campo concedido a:', matricula_siguiente['prom']) | |
lista_matriculas[indice2 + 1] = matricula | |
lista_matriculas[indice2] = matricula_siguiente | |
calcular_hora_matriculas() | |
#Esta funcion se invoca despues de organizar los cupos | |
def calcular_hora_matriculas(): | |
hora = 8 #Esto porque las matrículas inician a las 8:00 am | |
minuto = 00 | |
for matricula in lista_matriculas: | |
matricula['hora_matricula'] = "{}:{}".format(hora, minuto) | |
minuto += 15 | |
if(minuto == 60): | |
hora +=1 | |
minuto = 0 | |
def calcular_lugar(prom, creditos): | |
return prom / creditos | |
def guardar_matricula(matricula_a_guardar : dict): | |
print("Guardando matricula...") | |
lista_matriculas.append(matricula_a_guardar) | |
organizar_espacios_matricula() | |
print(lista_matriculas) | |
def main(): | |
print("Recolectando datos de matricula...") | |
nombre = nombre_txt.get() | |
carne = int(carne_txt.get()) | |
fecha = fecha_nacimiento_txt.get() | |
#Promedio general de hace 2 semestres que el estudiante ya tiene conocimiento | |
prom = float(prom_txt.get()) | |
#El estudiante suma personalmente los créditos que matriculó hace 2 semestres | |
creditos = int(creditos_txt.get()) | |
carrera = carrera_txt.get() | |
hora_matricula = "8:00 am" | |
lista_datos = {'nombre' : nombre, 'carne' : carne, 'fecha' : fecha, 'prom' : prom, 'creditos' : creditos, 'carrera' : carrera, 'hora_matricula' : hora_matricula} | |
guardar_matricula(lista_datos) | |
mostrar_tabla_matriculas() | |
mensaje_lbl['text'] = '¡Matriccula guardada!' | |
guardar_matricula_btn = tkinter.Button(ventana, text='Guardar matrícula', command=main) | |
guardar_matricula_btn.grid(row=8, column=1) | |
if __name__ == '__main__': | |
ventana.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment