A collection of 15 small — minute — desktop applications written in Python using the PyQt framework. These apps are intended as examples from which you can poke, hack and prod your way to writing your own tools.
The apps
The apps showcase various parts of the Qt framework, including advanced widgets, multimedia, graphics views and decorationless windows. However, the most generally interesting/feature complete applications are Minesweeper, Solitaire and Paint.
The source code for all apps is available in the Github repository. All code is MIT licensed and free to use to in your own projects.
Web Browser - "MooseAche"
An example web browser built with Python and Qt. Using the QtWebEngineWidgets system introduced in Qt5.6, this provides a single-window browsing experience with the usual controls, as well as saving and loading HTML.
Web Browser (tabbed) — "Mozzarella Ashbadger"
Mozarella Ashbadger is the latest revolution in web browsing! Go back and forward! Print! Save files! Get help! (you’ll need it). Any similarity to other browsers is entirely coincidental.
Packaging Python Applications with PyInstaller by Martin Fitzpatrick — This step-by-step guide walks you through packaging your own Python applications from simple examples to complete installers and signed executables.
Minesweeper — "Moonsweeper"
Explore the mysterious moon of Q'tee without getting too close to the alien natives!
Moonsweeper is a single-player puzzle game base on the classic Minesweeper. The objective of the game is to explore the area around your landed space rocket, without coming too close to the deadly B'ug aliens. Your trusty tricounter will tell you the number of B'ugs in the vicinity.
Notepad — "No2Pads"
A very simple notepad clone using the QTextEdit widget to handle more or less everything. Supports file loading, saving and printing.
Calculator — "Calculon"
A simple calculator application implemented in Python using PyQt. The UI was designed in Qt Designer and the calculator operations are implemented using simple stack-based logic.
Word Processor — "Megasolid Idiom"
The word processor for all your small, poorly formatted documents. An extension of the notepad, again using a QTextEdit but with rich text editing enabled.
Webcam/Snapshot — "NSAViewer"
With this webcam snapshot application you can take photos of what is currently being viewed by your webcam. Uses the Qt QtMultimedia framework for handling all the interaction with the camera, and supports multiple cameras if you have them.
Media Player — "Failamp"
Simple app to listen to and watch videos and audio files, with built in playlist. Uses QtMultimedia and QtMultimediaWidgets to handle playback and manage the playlist.
Post-it Notes - "Brown Note" (QtDesigner)
Take temporary notes on your desktop, with this floating-note app. Notes are stored locally in a SQLite database.
Paint - "Piecasso" (QtDesigner)
Express yourself with PieCasso, the only painting app to feature ready made pictures of pie.
Piecasso is a clone of the Paint programme from Windows 95 (ish) with a few additions (and subtractions). The programme features standard tools including pen, brush, fill, spray can, eraser, text and a number of shapes.
Unzip - "7Pez" (QtDesigner)
Unzip your files with a cat. Drag-drop your zip file onto the floaty cat, and fill up it's Pez-file repository. Press the head to release the Pez (your files) into the same folder.
Translator - "Translataarrr" (QtDesigner)
A translator from any language (supported by Google translate) to pirate. This uses a remote API from http://api.funtranslations.com for English to Pirate translation, and a unofficial Python wrapper around Google translate for other languages to English.
Weather - "Raindar" (QtDesigner)
Get your daily weather and 15hr forecast. Data is provided by the free weather and forecast API from https://openweathermap.org/
Currency converter - "Doughnut" (PyQtGraph)
This is a simple currency exchange rate tracker implemented in PyQt, using the fixer.io API for data. The default setup shows currency data for the preceding 180 days.
Solitaire - "Ronery" (QGraphicsScene)
The classic card Solitaire (Klondike) game with a North Korea / Team America: World Police theme. The game is otherwise identical, offering the same options. Built with PyQt, it uses QGraphicsScene to handle the play area.
Getting started
To use each app you first need to install the requirements. In most cases the only requirements are PyQt5, and occasionally requests (for http requests). To install app-specific requirements change to the folder of the app and run:
pip3 install -r requirements.txt
Once the requirements are installed, you can run the app using Python 3.
python3 <filename>.py
The application window should appear.
License
All code is licensed under an MIT license. This allows you to re-use the code freely, remixed in both commercial and non-commercial projects. The only requirement is to include the same license when distributing.
The intent here is to allow as many people as possible to make use of this code, so you if you have specific license requirements or questions, feel free to ask — the answer is probably "yes."
Icons used in the applications are by Yusuke Kamiyaman.
Create GUI Applications with Python & Qt6 by Martin Fitzpatrick — (PyQt6 Edition) The hands-on guide to making apps with Python — Over 10,000 copies sold!