by LU2EXV
A desktop application for amateur radio operators designed to generate QSL cards in bulk from ADIF log files. Built with Python, PyQt6, and Pillow.
Prebuilt executables for Windows, Linux are available in the latest GitHub Releases
-
ADIF Import: Load contacts directly from your favorite logging software.
-
Live Preview: See your QSL card updates in real time.
-
Highly Customizable:
- Change table background and text colors.
- Adjust transparency for seamless blending with the background image.
- Choose from 7 predefined table positions (top, bottom, left, right, center, etc.).
-
Manual Editing: Edit contact data directly in the table, add new QSOs manually, or remove unwanted entries.
-
Fast Batch Export: Uses multithreaded background processing (
QThread) to export hundreds of QSL cards quickly without freezing the UI. -
Multilingual: Built-in support for English and Spanish, with automatic system language detection.
-
Settings Persistence: Saves your callsign, colors, and preferences for future sessions.
QSL-Card-Generator/
├── main.py # Application entry point
├── qsl_design.ui # Qt Designer UI file
├── requirements.txt # Project dependencies
├── core/ # Core logic
│ ├── engine.py # Image rendering engine (Pillow)
│ ├── exporter.py # Background processing threads
│ └── i18n.py # Internationalization system
│ └── version.py # Version information
│ └── updater.py # Update system
│ └── utils.py # Utility functions
├── ui/ # UI controllers
│ ├── main_window.py # Main window
│ └── settings_dialog.py # Settings dialog
├── locales/ # Language files
│ ├── en.json
│ └── es.json
└── dist/ # Build scripts and output
├── build_windows.py # Windows build script
└── build_appimage.py # Linux build script
To create a standalone executable using PyInstaller:
pip install pyinstaller
python3 ./dist/build_windows.pyTo create AppImage for Linux:
./dist/build_appimage.shTo run the Jekyll server for documentation development (from the docs/ directory):
sudo apt-get install ruby-full build-essential zlib1g-dev # Install Ruby and dependencies
gem install jekyll bundler # Install Jekyll and Bundler
bundle config set --local path 'vendor/bundle' # Configure Bundler to install gems locally
bundle install # Install Jekyll dependencies
bundle exec jekyll serve # Start the Jekyll serverThis is a personal project developed for the amateur radio community.
Feedback, suggestions, and contributions are always welcome!
73 and good DX!
