Terminado

Tengo una base del código que hay que completar

Publicado el 30 Enero, 2024 en Programación y Tecnología

Sobre este proyecto

Abierto

Necesito crear un ejecutable .exe en python que haga lo siguiente:
Que lleve como titulo en la ventana principal: Software Libre - Ruta de lenguaje y en el pie de pagina de la pantalla:  Software Libre Hamilton Colombia wwww.hamiltoncolombia.com. El aplicativo debe tener un boton para cada grado ( 3°,4°,5°,6°;7°,8°,9°,10°,11°) cada grado debe permitir que el usuario presente 4 examenes y seleccione una opcion de respuesta las cuatro posibles opciones (A,B,C,D) enumeradas del 1 al 20.

Donde las respuestas correctas que con que el sistema va acalificar cada exámen serán:     
en cada del grado 3° examen 1 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,B,A,A,B,A,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,B,A,B,B,B,B,B,C,C,C,C,C,D,D,A,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.


Donde las respuestas correctas del grado 4° examen 1 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,A,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,B,D,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.


Donde las respuestas correctas del grado 5° examen 1 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.

Donde las respuestas correctas del grado 6° examen 1 serán en su orden A,A,A,A,A,B,A,B,B,B,C,B,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.

Donde las respuestas correctas del grado 7° examen 1 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,A,B,B,C,C,B,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.

Donde las respuestas correctas del grado 8° examen 1 serán en su orden A,A,A,A,A,B,B,A,B,B,C,C,D,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.

Donde las respuestas correctas del grado 9° examen 1 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,A,B,B,C,C,C,C,C,D,D,B,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.

Donde las respuestas correctas del grado 10° examen 1 serán en su orden A,A,A,A,A,B,B,B,A,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,B,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.


Donde las respuestas correctas del grado 11° examen 1 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 2 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D. Del examen 3 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.del examen 4 serán en su orden A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,D,D,D,D,D.


Condiciones:

El estudiante solo puede realizar inicialmente la primera prueba del primer grado en este caso 3° si aprueba la prueba 1 de ese grado continuará realizando las otras sucesivamente hasta completar la prueba 4 cuando el estudiante  apruebe las 4 pruebas de un grado se habilitará el siguiente nivel.

Cuando el usuario introduzca las 20 respuestas el aplicativo debe mostrarle cuantas preguntas buenas sobre el total que son 20 en caso de aprobar 17 mostrar un mensaje de: Felicidades pasaste al siguiente nivel y en caso de ser 16 o menos mostrar el mensaje: Lo siento debes presentar  otro examen del mismo nivel .Ademas debe mostrar las preguntas que se equivocó.  Las ventanas del programa deben ocupar todo el area disponible y los grados deben ir de forma creciente ademas deben ponerse en color amarillo los botones de los grados superados y el fondo de los colores de los botones debe ser azul oscuro inicialmente y el color de la letra blanco.

Contexto general del proyecto

Import tkinter as tk from tkinter import messagebox class QuizApp: def __init__(self, root): self.root = root root.title("Hamilton Colombia - Ruta de lenguaje") root.state('zoomed') self.setup_grades() self.current_grade = 3 self.current_exam = 1 self.exam_results = {grade: [None] * 4 for grade in self.grades} self.grade_buttons = {} self.create_widgets() def setup_grades(self): self.grades = {f"{grade}°": [['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C', 'D', 'D', 'D', 'D', 'D'] for _ in range(4)] for grade in range(3, 12)} def create_widgets(self): total_grades = len(self.grades) min_height = 2 max_height = 6 # Ajusta este valor según tus necesidades for i, grade in enumerate(sorted(self.grades, key=lambda g: int(g[:-1]))): # Calcular la altura del botón de manera proporcional height_factor = min_height + (max_height - min_height) * i / (total_grades - 1) button = tk.Button(self.root, text=grade, bg="dark blue", fg="white", font=("Helvetica", 12), command=lambda g=grade: self.open_exam_window(g)) button.grid(row=0, column=i, sticky="nsew", padx=5, pady=5) self.root.grid_columnconfigure(i, weight=1) button.config(height=int(height_factor)) self.grade_buttons[grade] = button self.footer_label = tk.Label(self.root, text="Desarrollado por el laboratorio de software de Hamilton Colombia www.hamiltoncolombia.com", font=("Helvetica", 10)) self.footer_label.grid(row=1, column=0, columnspan=total_grades, sticky="sew") self.root.grid_rowconfigure(1, weight=1) def open_exam_window(self, grade): if int(grade[:-1]) > self.current_grade: messagebox.showinfo("Información", f"No puedes acceder a este grado aún.") Return exam_window = tk.Toplevel(self.root) exam_window.title(f"{grade} - Examen {self.current_exam}") exam_window.state('zoomed') self.create_exam_widgets(exam_window, self.grades[grade][self.current_exam - 1], grade) def create_exam_widgets(self, window, answers, grade): self.option_vars = [tk.StringVar(value="N/A") for _ in range(20)] for i in range(20): frame = tk.Frame(window) label = tk.Label(frame, text=f"Pregunta {i+1}:", font=("Helvetica", 12)) label.pack(side=tk.LEFT) for option in ['A', 'B', 'C', 'D']: button = tk.Radiobutton(frame, text=option, variable=self.option_vars[i], value=option, font=("Helvetica", 12)) button.pack(side=tk.LEFT) frame.pack() submit_button = tk.Button(window, text="Enviar Respuestas", font=("Helvetica", 12), command=lambda: self.evaluate_answers(window, answers, grade)) submit_button.pack() def evaluate_answers(self, window, correct_answers, grade): if any(var.get() == "N/A" for var in self.option_vars): window.iconify() messagebox.showwarning("Respuestas incompletas", "Por favor, responde a todas las preguntas antes de enviar.") Window.deiconify() return user_answers = [var.get() for var in self.option_vars] score = sum(user_answer == correct_answer for user_answer, correct_answer in zip(user_answers, correct_answers)) self.show_result(window, score, grade) def show_result(self, window, score, grade): result_message = f"{score}/20" if score >= 17: messagebox.showinfo("Resultado", f"Felicidades pasaste al siguiente nivel. Respuestas correctas: {result_message}") self.current_grade += 1 self.current_exam = 1 self.grade_buttons[f"{self.current_grade - 1}°"].config(bg="yellow", fg="black") else: messagebox.showinfo("Resultado", f"Lo siento debes presentar otro examen del mismo nivel. Respuestas correctas: {result_message}") self.current_exam = (self.current_exam % 4) + 1 window.destroy() if __name__ == "__main__": root = tk.Tk() app = QuizApp(root) root.mainloop()

Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Bug o cambio pequeño
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Roles necesarios Programador

Plazo de Entrega: 03 Febrero, 2024

Habilidades necesarias

Otros proyectos publicados por W.