Add versions for PySide6, PyQt6 & PySide2.

Break down examples into module files to make easier to read. Use
full-definitions on Enums (PyQt6 compatible, better documenting).
Add fixes for Qt6 versions & some general bugfixes.
This commit is contained in:
Martin Fitzpatrick
2024-02-19 13:36:32 +01:00
parent 38118a64a4
commit b74592ea41
1448 changed files with 146610 additions and 27745 deletions

View File

@@ -1,62 +1,92 @@
# 15 Minute Apps
# Python GUIs Examples
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.
**This repository contains 100s of GUI examples written in Python**. From complete working applications to reusable widgets snippets, these examples can
be _freely_ re-used, re-mixed and tweaked to build your own Python GUI applications.
> Many of these apps have more detailed write-ups on my PyQt5/PySide2 site at [LearnPyQt.com](https://www.learnpyqt.com/apps/).
If you're new to creating GUI apps check out the introductory [pyqt5 tutorial](https://www.learnpyqt.com/courses/start/).
Examples are available for
[PyQt6](https://github.com/pythonguis/15-minute-apps/tree/master/pyqt6),
[PySide6](https://github.com/pythonguis/15-minute-apps/tree/master/pyside6),
[PySide2](https://github.com/pythonguis/15-minute-apps/tree/master/pyside2)
and [PyQt5](https://github.com/pythonguis/15-minute-apps/tree/master/pyqt5)
## The apps
> Many of these examples have more detailed write-ups on the [Python GUIs website](https://www.pythonguis.com/). If you're new to creating GUI apps check out the introductory [PyQt6 tutorial](https://www.pythonguis.com/pyqt6-tutorial/) or [PySide6 tutorial](https://www.pythonguis.com/pyside6-tutorial/).
## The demo 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.
1. [Web Browser (untabbed)](browser/) - "MooseAche"
1. [Web Browser (tabbed)](browser_tabbed/) - "Mozzarella Ashbadger"
1. **[Minesweeper](minesweeper/) - "Moonsweeper"**
1. [Notepad](notepad/) - "No2Pads"
1. [Calculator](calculator/) - "Calculon" (QtDesigner)
1. [Word Processor](wordprocessor/) - "Megasolid Idiom"
1. [Webcam/Snapshot](camera/) - "NSAViewer"
1. [Media Player](mediaplayer/) - "Failamp"
1. [Post-it Notes](notes/) - "Brown Note" (QtDesigner)
1. **[Paint](paint/) - "Piecasso" (QtDesigner)**
1. [Unzip](unzip/) - "7Pez" (QtDesigner)
1. [Translator](translate/) - "Translataarrr" (QtDesigner)
1. [Weather](weather/) - "Raindar" (QtDesigner)
1. [Currency converter](currency/) - "Doughnut" (PyQtGraph)
1. **[Solitaire](solitaire/) - "Ronery" (QGraphicsScene)**
1. Web Browser (untabbed) - "MooseAche"
1. Web Browser (tabbed) - "Mozzarella Ashbadger"
1. Minesweeper - "Moonsweeper"
1. Notepad - "No2Pads"
1. Calculator - "Calculon" (QtDesigner)
1. Word Processor - "Megasolid Idiom"
1. Webcam/Snapshot - "NSAViewer"
1. Media Player - "Failamp"
1. Post-it Notes - "Brown Note" (QtDesigner)
1. Paint - "Piecasso" (QtDesigner)
1. Unzip - "7Pez" (QtDesigner)
1. Translator - "Translataarrr" (QtDesigner)
1. Weather - "Raindar" (QtDesigner)
1. Currency converter - "Doughnut" (PyQtGraph)
1. Solitaire - "Ronery" (QGraphicsScene)
## The widgets
![Graphical Equalizer](https://i.imgur.com/0F2ZgqE.gif)
**Graphical Equalizer** Visualize audio frequency changes with configurable styles and decay.
![Power Meter](https://i.imgur.com/0dpZIMV.gif)
**Power Bar** Rotary control with amplitude display.
![Palette](https://cdn.learnpyqt.com/media/images/Screenshot_2019-06-15_at_15.18.14.max-500x500.png)
**Palette** Select colors from a configurable linear or grid palette.
![Gradient Editor](https://cdn.learnpyqt.com/media/images/Screenshot_2019-06-15_at_18.32.52.max-500x500.png)
**Linear Gradient Editor** Design custom linear gradients with multiple stops and colors.
**Color Button** Simple button that displays and selects colors.
**Paint** Draw pictures with a custom bitmap canvas, with color and pen control.
**Password Edit** A password line editor with toggleable visibility action.
![Toggle Widget](https://i.imgur.com/rHrkkG3.gif)
Replace checkboxes with this handy toggle widget, with custom colors and optional animations.
## The tutorials
As well as the complete apps & re-usable widgets we've got selection of code snippets taken from tutorials on the [Python GUIs](https://www.pythonguis.com) website. These guide you through building GUIs with PyQt, PySide and other libraries.
## Getting started
To use each app you first need to install the requirements. In most cases
the only requirements are PyQt5, and occasionally requests. To install
app-specific requirements change to the folder of the app and run:
the only requirements are the GUI library and occasionally requests. To install
example specific requirements change to the folder of the example and run:
pip3 install -r requirements.txt
Once the requirements are installed, you can run the app using Python 3.
python3 <filename>.py
Once the requirements are installed, you can run the app. Every example in this repo comes with a main Python file called `main.py` to keep things simple.
python3 main.py
The application window should appear.
## Want to build your own apps?
> If you think these apps are neat and want to learn more about
PyQt in general, take a look at my [PyQt5 tutorial](https://www.learnpyqt.com)
which covers everything you need to know to start building your own applications with PyQt.
take a look at my [PyQt6 tutorial](https://www.pythonguis.com/pyqt6-tutorial)
which covers everything you need to know to start building your own applications with Python.
You can also find write-ups about these "minute apps" [on the same site](http://www.learnpyqt.com/apps).
You can also find more write-ups and tips [on the same site](http://www.pythonguis.com/).
## 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.
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.
## Other licenses