EZFlip is a flashcard application designed to help users create, manage, and learn from custom flashcards. It supports text, images, and videos, and includes gesture control for hands-free operation.
- Create and manage flashcard sets
- Add flashcards with text, images, and videos
- Edit existing flashcard sets
- Learn mode with gesture control for flipping cards and navigating
- Simple and intuitive user interface
- Tooltip assistance for buttons and interactive elements
- Video and audio synchronization for flashcards with video content
- Scrollable interface for managing large sets of flashcards
- Python 3.x
- SQLite3
- Tkinter
- Ttkbootstrap
- PIL (Pillow)
- OpenCV
- FFMPEG
- Pygame
- Mediapipe
-
Clone the repository:
git clone https://github.com/underscorepan/ezflip.git cd ezflip -
Install dependencies:
pip install -r requirements.txt
-
Install FFMPEG:
- Download FFMPEG from the official site: FFMPEG Download
- Add FFMPEG to your system's PATH.
-
Run the application:
python main.py
-
Smoke-test:
- In
Create Set, add a set name plus one card (word + definition, optional media), click Add Word then Save Set. - In
Select Set, choose the set and click Select Set, then switch toLearning Modeto confirm flip/next/previous work. - For video cards, verify playback and audio (FFmpeg must be on PATH).
- Gesture control requires a webcam; show 1/2/3 fingers to trigger previous/next/flip. Press
Qto close the gesture window.
- In
- Open the application and navigate to the
Create Settab. - Enter the name of the flashcard set.
- Add words, definitions, images, and video paths.
- Click
Add Wordto add the flashcard to the set. - Click
Save Setto save the flashcard set.
- Navigate to the
Edit Settab. - Choose a flashcard set from the dropdown and click
Select Set. - View the list of flashcards in the selected set.
- To delete a flashcard, select it from the list and click
Delete Word. - To add a new flashcard, enter the details in the provided fields and click
Add Word. - To update the name of the flashcard set, enter the new name in the
New Set Namefield and clickUpdate Set Name.
- Navigate to the
Select Settab. - Choose a flashcard set from the dropdown and click
Select Set. - Navigate to the
Learning Modetab to start reviewing the flashcards. - Use the
PreviousandNextbuttons to navigate through the flashcards. - Click
Flipto view the definition of the current flashcard. - Use hand gestures to control the flashcards:
- 1 finger: Previous card
- 2 fingers: Next card
- 3 fingers: Flip card
- To update the name of a flashcard set, enter the new name in the
New Set Namefield in theEdit Settab and clickUpdate Set Name. - To delete a flashcard set, select the set from the dropdown in the
Select Settab and clickDelete Set.
The application uses Mediapipe for gesture recognition. To use gesture control:
- Ensure your webcam is enabled.
- The application will automatically detect hand gestures and perform actions based on the number of fingers shown.
- Press
Qto turn off the webcam at any moment.
The following libraries and modules are used in the application:
- Tkinter and Ttkbootstrap for the GUI.
- SQLite3 for database management.
- PIL (Pillow) for image processing.
- OpenCV for video processing.
- FFMPEG for audio extraction.
- Pygame for audio playback.
- Mediapipe for gesture recognition.
- Database Management: Functions to create, update, and delete flashcard sets and cards.
- Flashcard Display: Functions to display text, images, and videos on flashcards.
- Gesture Control: Mediapipe integration for gesture-based navigation.
- Audio-Video Synchronization: Extraction and playback of audio from video files.
- Scrollable Interface: Canvas and scrollbar implementation to handle large sets of flashcards.
- Module Layout: Shared helpers now live under
ezflip/(database.py,media.py,gesture.py,tooltips.py) withmain.pyas the entry point.
- FFmpeg errors or no video/audio: Install FFmpeg and ensure it is on your system PATH.
- Import errors: Re-run dependency install (
pip install -r requirements.txt) with the same Python you use to runmain.py. - Gesture window issues: Confirm your webcam is available; press
Qin the gesture window to close it.
If you would like to contribute to EZFlip, please fork the repository and submit a pull request. Contributions are welcome!
This project is licensed under the MIT License. See the LICENSE file for details.
- Tkinter and Ttkbootstrap for the GUI
- Mediapipe for gesture recognition
- OpenCV for video processing
- FFMPEG for audio extraction
- Pygame for audio playback
- @Grimmlen_ for the Walfie Suisei
- @Nick-de-Bruin for troubleshooting