π Introduction
Building a Quiz App using Python and Tkinter was an exciting journey! I wanted to create a project that not only strengthens my Python programming skills but also provides an interactive user experience. A quiz app is a great way to combine GUI development, database management, and logical programming into a single project.
π― Features
- User Authentication: Admin and Player login integrated into the same window.
- Question Database: Managed with MySQL to store questions dynamically.
- Interactive UI: Tkinter-based graphical interface with smooth transitions.
- Real-time Score Tracking: Displays correct/incorrect answers with a progress indicator.
- Result Summary: Shows final score and performance analysis.
π οΈ Tech Stack
- Python (Core language)
- Tkinter (GUI framework)
- MySQL (Database for storing questions & user data)
ποΈ Database Setup
Before running the app, make sure to configure your MySQL database:
Step 1 : Create the database
CREATE DATABASE quiz_app;
Step 2 : Create the tables
USE quiz_app;
CREATE TABLE table_name (
column1 INT AUTO_INCREMENT PRIMARY KEY,
column2 VARCHAR(50) NOT NULL,
column3 BOOLEAN NOT NULL
);
Step 3 :Configure Connection in database.py
Inside database.py, set up the MySQL connection with your local credentials:
- host : usually localhost
- user : your MySQL username
- password: your MySQL password
- database: quiz_app
Also, make sure to define and export conn, cursor, and mysql so they can be imported in other files.
π οΈ If you see ImportError: cannot import name 'conn' from 'database', it means the connection variables are either not defined or not properly exported in database.py.
π How to Run
Step 1 Clone the repository:
git clone https://github.com/SIMRAN-202/Tkinter-Quiz-App
Step 2 Install Dependencies:
pip install mysql-connector-python
Step 3 Run the Application:
python main.py
π Challenges Faced & Solutions
-
Issue: Handling database connectivity dynamically.
- Solution: Used MySQL Connector with parameterized queries.
-
Issue: UI not updating correctly after answering a question.
- Solution: Used Tkinterβs
after()
method to refresh UI state smoothly.
- Solution: Used Tkinterβs
-
Issue: Managing different user roles (Admin & Player) in the same window.
- Solution: Implemented a single login window with role-based access control.
π Accomplishments
- Successfully built a fully functional quiz app with dynamic questions.
- Implemented real-time score tracking and user-friendly UI.
- Learned efficient database management and Tkinter best practices.
π Future Improvements
- Add multiple question types (MCQs, fill-in-the-blanks, etc.).
- Implement a leaderboard for competitive play.
- Integrate Django for a web-based version in the future.
π€ Contributing
If youβd like to contribute, feel free to fork the repository and submit a pull request! π
π Contact
π§ Email: kaursimrankaur2003@gmail.com
π LinkedIn: https://www.linkedin.com/in/simran-ba0595315/
Built with π by Simran
Top comments (2)
Add how to setup the database to connect locally, this is throwing error and unable to run the program.
from database import conn, cursor, mysql
ImportError: cannot import name 'conn' from 'database' (c:\Users\Downloads\learnings\Tkinter-Quiz-App\database.py)
Hi! Thanks for checking out the project
The error means the database.py file doesn't have the conn and cursor setup.
I'll update the article to include proper database setup steps so it runs smoothly. Appreciate the feedback!