Completed

Tengo una base del código que hay que completar

Published on the January 30, 2024 in IT & Programming

About this project

Open

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.

Project overview

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()

Category IT & Programming
Subcategory Web development
What is the scope of the project? Small change or bug
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Roles needed Developer

Delivery term: February 03, 2024

Skills needed

Other projects posted by W.