Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pyapp-kit/magicgui
build GUIs from type annotations
https://github.com/pyapp-kit/magicgui
autogeneration graphical-user-interface gui python type-annotations widgets
Last synced: 6 days ago
JSON representation
build GUIs from type annotations
- Host: GitHub
- URL: https://github.com/pyapp-kit/magicgui
- Owner: pyapp-kit
- License: mit
- Created: 2020-02-06T23:25:47.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-07T01:22:26.000Z (15 days ago)
- Last Synced: 2025-01-12T05:29:16.160Z (10 days ago)
- Topics: autogeneration, graphical-user-interface, gui, python, type-annotations, widgets
- Language: Python
- Homepage: https://pyapp-kit.github.io/magicgui/
- Size: 48.5 MB
- Stars: 399
- Watchers: 13
- Forks: 50
- Open Issues: 65
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
build GUIs from type annotations, using magic.## 📖 Docs
[https://pyapp-kit.github.io/magicgui/](https://pyapp-kit.github.io/magicgui/)
## Installation
`magicgui` uses `qtpy` to support both `pyside2` and `pyqt5` backends. However, you
must have one of those installed for magicgui to work.install with pip
```bash
pip install magicgui[pyqt5]
# or
pip install magicgui[pyside2]
```or with conda:
```bash
conda install -c conda-forge magicgui pyqt # or pyside2 instead of pyqt
```> :information_source: If you'd like to help us extend support to a different backend,
> please open an [issue](https://github.com/pyapp-kit/magicgui/issues).## Basic usage
```python
from magicgui import magicgui
from enum import Enumclass Medium(Enum):
Glass = 1.520
Oil = 1.515
Water = 1.333
Air = 1.0003# decorate your function with the @magicgui decorator
@magicgui(call_button="calculate", result_widget=True)
def snells_law(aoi=30.0, n1=Medium.Glass, n2=Medium.Water, degrees=True):
import mathaoi = math.radians(aoi) if degrees else aoi
try:
result = math.asin(n1.value * math.sin(aoi) / n2.value)
return math.degrees(result) if degrees else result
except ValueError:
return "Total internal reflection!"# your function is now capable of showing a GUI
snells_law.show(run=True)
```![snells](https://raw.githubusercontent.com/pyapp-kit/magicgui/main/resources/snells.png)
But that's just the beginning! Please see [Documentation](https://pyapp-kit.github.io/magicgui/) for many more details
and usage examples.## Contributing
Contributions are welcome!
See contributing guide [here](https://github.com/pyapp-kit/magicgui/blob/main/docs/CONTRIBUTING.md).