<div align="center">
# PyQt Toast
<img src="https://socialify.git.ci/Cassianvale/pyqttoast/image?font=Source+Code+Pro&language=1&name=1&pattern=Diagonal+Stripes&theme=Auto" alt="pyqttoast" width="640" height="320" />
[](https://pypi.org/project/pyqttoast-enhanced/)
[](https://github.com/Cassianvale/pyqttoast)
[](https://github.com/Cassianvale/pyqttoast)
[](https://github.com/Cassianvale/pyqttoast)
[](https://github.com/Cassianvale/pyqttoast/blob/master/LICENSE)
**Language:** ➡️*English* | [中文](README_CN.md)
An enhanced fork of pyqt-toast-notification with additional features and improvements
> **Note**: This is an enhanced fork of the original [pyqt-toast-notification](https://github.com/niklashenning/pyqttoast) by Niklas Henning.
> All credit for the original work goes to the original author.
</div>

## ✨ Key Features
* **Modern Margin API** - Flexible and efficient margin management with multiple input formats
* **Advanced Animation Control** - Independent position and animation direction control
* **Performance Optimized** - Cached stylesheets, regex patterns, and optimized rendering
* **Multi-toast Support** - Show multiple toasts simultaneously with intelligent queueing
* **7 Position Options** - Flexible positioning including screen center
* **Multi-screen Support** - Works seamlessly across multiple monitors
* **Widget-relative Positioning** - Position toasts relative to specific widgets
* **Modern UI** - Fully customizable appearance with preset styles
* **Cross-platform** - Works with `PyQt5`, `PyQt6`, `PySide2`, and `PySide6`
## Installation
### Enhanced Version (This Fork)
Install the enhanced version with additional features:
```bash
pip install pyqttoast-enhanced
```
### Original Version (Stable)
If you want to use the original author's stable version:
```bash
pip install pyqt-toast-notification
```
### Development Installation
For development or to get the latest features:
```bash
git clone https://github.com/Cassianvale/pyqttoast.git
cd pyqttoast
pip install -e .
1. **Clone this repository:**
```bash
git clone https://github.com/Cassianvale/pyqttoast.git
cd pyqttoast
```
2. **Install dependencies:**
```bash
pip install -r requirements.txt
```
3. **Install in development mode:**
```bash
pip install -e .
```
4. **Or run directly without installation:**
```python
# Add project root directory to Python path
import sys
sys.path.insert(0, '/path/to/pyqttoast')
from src.pyqttoast import Toast, ToastPreset
```
> **Note:** This project includes modern margin API, performance optimizations, and other enhancements not available in the original version.
## Usage
Import the `Toast` class, instantiate it, and show the toast notification with the `show()` method:
```python
from PyQt6.QtWidgets import QMainWindow, QPushButton
from pyqttoast import Toast, ToastPreset
class Window(QMainWindow):
def __init__(self):
super().__init__(parent=None)
# Add button and connect click event
self.button = QPushButton(self)
self.button.setText('Show toast')
self.button.clicked.connect(self.show_toast)
# Shows a toast notification every time the button is clicked
def show_toast(self):
toast = Toast(self)
toast.setDuration(5000) # Hide after 5 seconds
toast.setTitle('Success! Confirmation email sent.')
toast.setText('Check your email to complete signup.')
toast.applyPreset(ToastPreset.SUCCESS) # Apply style preset
toast.show()
```
> **IMPORTANT:** <br>An instance of `Toast` can only be shown **once**. If you want to show another one, even if the content is exactly the same, you have to create another instance.
## Customization
* **Setting the position of the toasts (<u>static</u>):**
```python
Toast.setPosition(ToastPosition.BOTTOM_MIDDLE) # Default: ToastPosition.BOTTOM_RIGHT
```
> **AVAILABLE POSITIONS:** <br> `BOTTOM_LEFT`, `BOTTOM_MIDDLE`, `BOTTOM_RIGHT`, `TOP_LEFT`, `TOP_MIDDLE`, `TOP_RIGHT`, `CENTER`
* **Setting whether the toasts should always be shown on the main screen (<u>static</u>):**
```python
Toast.setAlwaysOnMainScreen(True) # Default: False
```
* **Positioning the toasts relative to a widget instead of a screen (<u>static</u>):**
```python
Toast.setPositionRelativeToWidget(some_widget) # Default: None
```
* **Setting a limit on how many toasts can be shown at the same time (<u>static</u>):**
```python
Toast.setMaximumOnScreen(5) # Default: 3
```
> If you try to show more toasts than the maximum amount on screen, they will get added to a queue and get shown as soon as one of the currently showing toasts is closed.
* **Setting the vertical spacing between the toasts (<u>static</u>):**
```python
Toast.setSpacing(20) # Default: 10
```
* **Setting the x and y offset of the toast position (<u>static</u>):**
```python
Toast.setOffset(30, 55) # Default: 20, 45
```
* **Making the toast show forever until it is closed:**
```python
toast.setDuration(0) # Default: 5000
```
* **Enabling or disabling the duration bar:**
```python
toast.setShowDurationBar(False) # Default: True
```
* **Adding an icon:**
```python
toast.setIcon(ToastIcon.SUCCESS) # Default: ToastIcon.INFORMATION
toast.setShowIcon(True) # Default: False
# Or setting a custom icon:
toast.setIcon(QPixmap('path/to/your/icon.png'))
# If you want to show the icon without recoloring it, set the icon color to None:
toast.setIconColor(None) # Default: #5C5C5C
```
> **AVAILABLE ICONS:** <br> `SUCCESS`, `WARNING`, `ERROR`, `INFORMATION`, `CLOSE`
* **Setting the icon size:**
```python
toast.setIconSize(QSize(14, 14)) # Default: QSize(18, 18)
```
* **Enabling or disabling the icon separator:**
```python
toast.setShowIconSeparator(False) # Default: True
```
* **Setting the close button alignment:**
```python
toast.setCloseButtonAlignment(ToastButtonAlignment.MIDDLE) # Default: ToastButtonAlignment.TOP
```
> **AVAILABLE ALIGNMENTS:** <br> `TOP`, `MIDDLE`, `BOTTOM`
* **Enabling or disabling the close button:**
```python
toast.setShowCloseButton(False) # Default: True
```
* **Customizing the duration of the fade animations (milliseconds):**
```python
toast.setFadeInDuration(100) # Default: 250
toast.setFadeOutDuration(150) # Default: 250
```
* **Controlling animation direction:**
```python
toast.setAnimationDirection(ToastAnimationDirection.FROM_LEFT) # Default: ToastAnimationDirection.AUTO
```
> **AVAILABLE DIRECTIONS:** <br>
> `AUTO` - Direction based on toast position (backward compatible) <br>
> `FROM_TOP` - Slide in/out from top <br>
> `FROM_BOTTOM` - Slide in/out from bottom <br>
> `FROM_LEFT` - Slide in/out from left <br>
> `FROM_RIGHT` - Slide in/out from right <br>
> `FADE_ONLY` - Pure opacity animation, no position movement
* **Enabling or disabling duration reset on hover:**
```python
toast.setResetDurationOnHover(False) # Default: True
```
* **Making the corners rounded:**
```python
toast.setBorderRadius(3) # Default: 0
```
* **Setting custom colors:**
```python
toast.setBackgroundColor(QColor('#292929')) # Default: #E7F4F9
toast.setTitleColor(QColor('#FFFFFF')) # Default: #000000
toast.setTextColor(QColor('#D0D0D0')) # Default: #5C5C5C
toast.setDurationBarColor(QColor('#3E9141')) # Default: #5C5C5C
toast.setIconColor(QColor('#3E9141')) # Default: #5C5C5C
toast.setIconSeparatorColor(QColor('#585858')) # Default: #D9D9D9
toast.setCloseButtonIconColor(QColor('#C9C9C9')) # Default: #000000
```
* **Setting custom fonts:**
```python
# Init font
font = QFont('Times', 10, QFont.Weight.Bold)
# Set fonts
toast.setTitleFont(font) # Default: QFont('Arial', 9, QFont.Weight.Bold)
toast.setTextFont(font) # Default: QFont('Arial', 9)
```
* **Modern margin management (NEW):**
```python
# Simple - all margins the same
toast.setMargins(20)
# Precise - left, top, right, bottom
toast.setMargins((15, 10, 15, 20))
# Symmetric - horizontal, vertical
toast.setMargins((25, 15))
# Partial update - only specific margins
toast.setMargins({'left': 30, 'right': 35})
# Different component margins
toast.setMargins(10, 'icon') # Icon margins
toast.setMargins(5, 'text_section') # Text section margins
toast.setMargins(8, 'close_button') # Close button margins
# Fine-tune existing margins
toast.adjustMargins(top=8, bottom=12)
toast.adjustMargins('icon', left=5, right=10)
```
> **MARGIN TYPES:** <br> `content` (default), `icon`, `icon_section`, `text_section`, `close_button`
* **Applying a style preset:**
```python
toast.applyPreset(ToastPreset.ERROR)
```
> **AVAILABLE PRESETS:** <br> `SUCCESS`, `WARNING`, `ERROR`, `INFORMATION`, `SUCCESS_DARK`, `WARNING_DARK`, `ERROR_DARK`, `INFORMATION_DARK`
* **Setting toast size constraints:**
```python
# Minimum and maximum size
toast.setMinimumWidth(100)
toast.setMaximumWidth(350)
toast.setMinimumHeight(50)
toast.setMaximumHeight(120)
# Fixed size (not recommended)
toast.setFixedSize(QSize(350, 80))
```
**<br>Other customization options:**
| Option | Description | Default |
|-------------------------------|---------------------------------------------------------------------------------|----------------------------|
| `setFixedScreen()` | Fixed screen where the toasts will be shown (static) | `None` |
| `setMovePositionWithWidget()` | Whether the toasts should move with widget if positioned relative to a widget | `True` |
| `setIconSeparatorWidth()` | Width of the icon separator that separates the icon and text section | `2` |
| `setCloseButtonIcon()` | Icon of the close button | `ToastIcon.CLOSE` |
| `setCloseButtonIconSize()` | Size of the close button icon | `QSize(10, 10)` |
| `setCloseButtonSize()` | Size of the close button | `QSize(24, 24)` |
| `setStayOnTop()` | Whether the toast stays on top of other windows even when they are focused | `True` |
| `setTextSectionSpacing()` | Vertical spacing between the title and the text | `8` |
## API Documentation
For complete API reference and advanced usage examples, see:
- [Toast API Reference Table (English)](docs/Toast_API_Reference_Table.md) - Detailed documentation with examples
## Demo
https://github.com/niklashenning/pyqt-toast/assets/58544929/f4d7f4a4-6d69-4087-ae19-da54b6da499d
The demos for PyQt5, PyQt6, and PySide6 can be found in the [demo](demo) folder.
## Tests
Installing the required test dependencies [PyQt6](https://pypi.org/project/PyQt6/), [pytest](https://github.com/pytest-dev/pytest), and [coveragepy](https://github.com/nedbat/coveragepy):
```
pip install PyQt6 pytest coverage
```
To run the tests with coverage, clone this repository, go into the main directory and run:
```
coverage run -m pytest
coverage report --ignore-errors -m
```
## License
This software is licensed under the [MIT license](https://github.com/niklashenning/pyqttoast/blob/master/LICENSE).
Raw data
{
"_id": null,
"home_page": "https://github.com/Cassianvale/pyqttoast",
"name": "pyqttoast-enhanced",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "python, pyqt, qt, toast, notification, enhanced, fork",
"author": "CassianVale",
"author_email": "CassianVale <z1430066373@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/a9/1b/2c474c41d443a6aaccb19a019009c8b6c593eae970d9bd994893b3fec791/pyqttoast_enhanced-2.0.0.tar.gz",
"platform": null,
"description": "<div align=\"center\">\r\n\r\n# PyQt Toast\r\n\r\n<img src=\"https://socialify.git.ci/Cassianvale/pyqttoast/image?font=Source+Code+Pro&language=1&name=1&pattern=Diagonal+Stripes&theme=Auto\" alt=\"pyqttoast\" width=\"640\" height=\"320\" />\r\n\r\n[](https://pypi.org/project/pyqttoast-enhanced/)\r\n[](https://github.com/Cassianvale/pyqttoast)\r\n[](https://github.com/Cassianvale/pyqttoast)\r\n[](https://github.com/Cassianvale/pyqttoast)\r\n[](https://github.com/Cassianvale/pyqttoast/blob/master/LICENSE)\r\n\r\n**Language:** \u27a1\ufe0f*English* | [\u4e2d\u6587](README_CN.md)\r\n\r\nAn enhanced fork of pyqt-toast-notification with additional features and improvements\r\n\r\n> **Note**: This is an enhanced fork of the original [pyqt-toast-notification](https://github.com/niklashenning/pyqttoast) by Niklas Henning.\r\n> All credit for the original work goes to the original author.\r\n\r\n</div>\r\n\r\n\r\n\r\n## \u2728 Key Features\r\n* **Modern Margin API** - Flexible and efficient margin management with multiple input formats\r\n* **Advanced Animation Control** - Independent position and animation direction control\r\n* **Performance Optimized** - Cached stylesheets, regex patterns, and optimized rendering\r\n* **Multi-toast Support** - Show multiple toasts simultaneously with intelligent queueing\r\n* **7 Position Options** - Flexible positioning including screen center\r\n* **Multi-screen Support** - Works seamlessly across multiple monitors\r\n* **Widget-relative Positioning** - Position toasts relative to specific widgets\r\n* **Modern UI** - Fully customizable appearance with preset styles\r\n* **Cross-platform** - Works with `PyQt5`, `PyQt6`, `PySide2`, and `PySide6`\r\n\r\n## Installation\r\n\r\n### Enhanced Version (This Fork)\r\nInstall the enhanced version with additional features:\r\n```bash\r\npip install pyqttoast-enhanced\r\n```\r\n\r\n### Original Version (Stable)\r\nIf you want to use the original author's stable version:\r\n```bash\r\npip install pyqt-toast-notification\r\n```\r\n\r\n### Development Installation\r\nFor development or to get the latest features:\r\n```bash\r\ngit clone https://github.com/Cassianvale/pyqttoast.git\r\ncd pyqttoast\r\npip install -e .\r\n\r\n1. **Clone this repository:**\r\n```bash\r\ngit clone https://github.com/Cassianvale/pyqttoast.git\r\ncd pyqttoast\r\n```\r\n\r\n2. **Install dependencies:**\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n\r\n3. **Install in development mode:**\r\n```bash\r\npip install -e .\r\n```\r\n\r\n4. **Or run directly without installation:**\r\n```python\r\n# Add project root directory to Python path\r\nimport sys\r\nsys.path.insert(0, '/path/to/pyqttoast')\r\nfrom src.pyqttoast import Toast, ToastPreset\r\n```\r\n\r\n> **Note:** This project includes modern margin API, performance optimizations, and other enhancements not available in the original version.\r\n\r\n## Usage\r\nImport the `Toast` class, instantiate it, and show the toast notification with the `show()` method:\r\n\r\n```python\r\nfrom PyQt6.QtWidgets import QMainWindow, QPushButton\r\nfrom pyqttoast import Toast, ToastPreset\r\n\r\n\r\nclass Window(QMainWindow):\r\n def __init__(self):\r\n super().__init__(parent=None)\r\n\r\n # Add button and connect click event\r\n self.button = QPushButton(self)\r\n self.button.setText('Show toast')\r\n self.button.clicked.connect(self.show_toast)\r\n \r\n # Shows a toast notification every time the button is clicked\r\n def show_toast(self):\r\n toast = Toast(self)\r\n toast.setDuration(5000) # Hide after 5 seconds\r\n toast.setTitle('Success! Confirmation email sent.')\r\n toast.setText('Check your email to complete signup.')\r\n toast.applyPreset(ToastPreset.SUCCESS) # Apply style preset\r\n toast.show()\r\n```\r\n\r\n> **IMPORTANT:** <br>An instance of `Toast` can only be shown **once**. If you want to show another one, even if the content is exactly the same, you have to create another instance.\r\n\r\n\r\n## Customization\r\n\r\n* **Setting the position of the toasts (<u>static</u>):**\r\n```python\r\nToast.setPosition(ToastPosition.BOTTOM_MIDDLE) # Default: ToastPosition.BOTTOM_RIGHT\r\n```\r\n> **AVAILABLE POSITIONS:** <br> `BOTTOM_LEFT`, `BOTTOM_MIDDLE`, `BOTTOM_RIGHT`, `TOP_LEFT`, `TOP_MIDDLE`, `TOP_RIGHT`, `CENTER`\r\n\r\n\r\n* **Setting whether the toasts should always be shown on the main screen (<u>static</u>):**\r\n```python\r\nToast.setAlwaysOnMainScreen(True) # Default: False\r\n```\r\n\r\n* **Positioning the toasts relative to a widget instead of a screen (<u>static</u>):**\r\n```python\r\nToast.setPositionRelativeToWidget(some_widget) # Default: None\r\n```\r\n\r\n* **Setting a limit on how many toasts can be shown at the same time (<u>static</u>):**\r\n```python\r\nToast.setMaximumOnScreen(5) # Default: 3\r\n```\r\n> If you try to show more toasts than the maximum amount on screen, they will get added to a queue and get shown as soon as one of the currently showing toasts is closed.\r\n\r\n\r\n* **Setting the vertical spacing between the toasts (<u>static</u>):**\r\n```python\r\nToast.setSpacing(20) # Default: 10\r\n```\r\n\r\n* **Setting the x and y offset of the toast position (<u>static</u>):**\r\n```python\r\nToast.setOffset(30, 55) # Default: 20, 45\r\n```\r\n\r\n* **Making the toast show forever until it is closed:**\r\n```python\r\ntoast.setDuration(0) # Default: 5000\r\n```\r\n\r\n* **Enabling or disabling the duration bar:**\r\n```python\r\ntoast.setShowDurationBar(False) # Default: True\r\n```\r\n\r\n* **Adding an icon:**\r\n```python\r\ntoast.setIcon(ToastIcon.SUCCESS) # Default: ToastIcon.INFORMATION\r\ntoast.setShowIcon(True) # Default: False\r\n\r\n# Or setting a custom icon:\r\ntoast.setIcon(QPixmap('path/to/your/icon.png'))\r\n\r\n# If you want to show the icon without recoloring it, set the icon color to None:\r\ntoast.setIconColor(None) # Default: #5C5C5C\r\n```\r\n> **AVAILABLE ICONS:** <br> `SUCCESS`, `WARNING`, `ERROR`, `INFORMATION`, `CLOSE`\r\n\r\n\r\n* **Setting the icon size:**\r\n```python\r\ntoast.setIconSize(QSize(14, 14)) # Default: QSize(18, 18)\r\n```\r\n\r\n* **Enabling or disabling the icon separator:**\r\n```python\r\ntoast.setShowIconSeparator(False) # Default: True\r\n```\r\n\r\n* **Setting the close button alignment:**\r\n```python\r\ntoast.setCloseButtonAlignment(ToastButtonAlignment.MIDDLE) # Default: ToastButtonAlignment.TOP\r\n```\r\n> **AVAILABLE ALIGNMENTS:** <br> `TOP`, `MIDDLE`, `BOTTOM`\r\n\r\n* **Enabling or disabling the close button:**\r\n```python\r\ntoast.setShowCloseButton(False) # Default: True\r\n```\r\n\r\n* **Customizing the duration of the fade animations (milliseconds):**\r\n```python\r\ntoast.setFadeInDuration(100) # Default: 250\r\ntoast.setFadeOutDuration(150) # Default: 250\r\n```\r\n\r\n* **Controlling animation direction:**\r\n```python\r\ntoast.setAnimationDirection(ToastAnimationDirection.FROM_LEFT) # Default: ToastAnimationDirection.AUTO\r\n```\r\n> **AVAILABLE DIRECTIONS:** <br>\r\n> `AUTO` - Direction based on toast position (backward compatible) <br>\r\n> `FROM_TOP` - Slide in/out from top <br>\r\n> `FROM_BOTTOM` - Slide in/out from bottom <br>\r\n> `FROM_LEFT` - Slide in/out from left <br>\r\n> `FROM_RIGHT` - Slide in/out from right <br>\r\n> `FADE_ONLY` - Pure opacity animation, no position movement\r\n\r\n* **Enabling or disabling duration reset on hover:**\r\n\r\n```python\r\ntoast.setResetDurationOnHover(False) # Default: True\r\n```\r\n\r\n* **Making the corners rounded:**\r\n```python\r\ntoast.setBorderRadius(3) # Default: 0\r\n```\r\n\r\n* **Setting custom colors:**\r\n```python\r\ntoast.setBackgroundColor(QColor('#292929')) # Default: #E7F4F9\r\ntoast.setTitleColor(QColor('#FFFFFF')) # Default: #000000\r\ntoast.setTextColor(QColor('#D0D0D0')) # Default: #5C5C5C\r\ntoast.setDurationBarColor(QColor('#3E9141')) # Default: #5C5C5C\r\ntoast.setIconColor(QColor('#3E9141')) # Default: #5C5C5C\r\ntoast.setIconSeparatorColor(QColor('#585858')) # Default: #D9D9D9\r\ntoast.setCloseButtonIconColor(QColor('#C9C9C9')) # Default: #000000\r\n```\r\n\r\n* **Setting custom fonts:**\r\n```python\r\n# Init font\r\nfont = QFont('Times', 10, QFont.Weight.Bold)\r\n\r\n# Set fonts\r\ntoast.setTitleFont(font) # Default: QFont('Arial', 9, QFont.Weight.Bold)\r\ntoast.setTextFont(font) # Default: QFont('Arial', 9)\r\n```\r\n\r\n* **Modern margin management (NEW):**\r\n```python\r\n# Simple - all margins the same\r\ntoast.setMargins(20)\r\n\r\n# Precise - left, top, right, bottom\r\ntoast.setMargins((15, 10, 15, 20))\r\n\r\n# Symmetric - horizontal, vertical\r\ntoast.setMargins((25, 15))\r\n\r\n# Partial update - only specific margins\r\ntoast.setMargins({'left': 30, 'right': 35})\r\n\r\n# Different component margins\r\ntoast.setMargins(10, 'icon') # Icon margins\r\ntoast.setMargins(5, 'text_section') # Text section margins\r\ntoast.setMargins(8, 'close_button') # Close button margins\r\n\r\n# Fine-tune existing margins\r\ntoast.adjustMargins(top=8, bottom=12)\r\ntoast.adjustMargins('icon', left=5, right=10)\r\n```\r\n> **MARGIN TYPES:** <br> `content` (default), `icon`, `icon_section`, `text_section`, `close_button`\r\n\r\n* **Applying a style preset:**\r\n```python\r\ntoast.applyPreset(ToastPreset.ERROR)\r\n```\r\n> **AVAILABLE PRESETS:** <br> `SUCCESS`, `WARNING`, `ERROR`, `INFORMATION`, `SUCCESS_DARK`, `WARNING_DARK`, `ERROR_DARK`, `INFORMATION_DARK`\r\n\r\n* **Setting toast size constraints:**\r\n```python\r\n# Minimum and maximum size\r\ntoast.setMinimumWidth(100)\r\ntoast.setMaximumWidth(350)\r\ntoast.setMinimumHeight(50)\r\ntoast.setMaximumHeight(120)\r\n\r\n# Fixed size (not recommended)\r\ntoast.setFixedSize(QSize(350, 80))\r\n```\r\n\r\n\r\n**<br>Other customization options:**\r\n\r\n| Option | Description | Default |\r\n|-------------------------------|---------------------------------------------------------------------------------|----------------------------|\r\n| `setFixedScreen()` | Fixed screen where the toasts will be shown (static) | `None` |\r\n| `setMovePositionWithWidget()` | Whether the toasts should move with widget if positioned relative to a widget | `True` |\r\n| `setIconSeparatorWidth()` | Width of the icon separator that separates the icon and text section | `2` |\r\n| `setCloseButtonIcon()` | Icon of the close button | `ToastIcon.CLOSE` |\r\n| `setCloseButtonIconSize()` | Size of the close button icon | `QSize(10, 10)` |\r\n| `setCloseButtonSize()` | Size of the close button | `QSize(24, 24)` |\r\n| `setStayOnTop()` | Whether the toast stays on top of other windows even when they are focused | `True` |\r\n| `setTextSectionSpacing()` | Vertical spacing between the title and the text | `8` |\r\n\r\n## API Documentation\r\n\r\nFor complete API reference and advanced usage examples, see:\r\n- [Toast API Reference Table (English)](docs/Toast_API_Reference_Table.md) - Detailed documentation with examples\r\n\r\n## Demo\r\nhttps://github.com/niklashenning/pyqt-toast/assets/58544929/f4d7f4a4-6d69-4087-ae19-da54b6da499d\r\n\r\nThe demos for PyQt5, PyQt6, and PySide6 can be found in the [demo](demo) folder.\r\n\r\n## Tests\r\nInstalling the required test dependencies [PyQt6](https://pypi.org/project/PyQt6/), [pytest](https://github.com/pytest-dev/pytest), and [coveragepy](https://github.com/nedbat/coveragepy):\r\n```\r\npip install PyQt6 pytest coverage\r\n```\r\n\r\nTo run the tests with coverage, clone this repository, go into the main directory and run:\r\n```\r\ncoverage run -m pytest\r\ncoverage report --ignore-errors -m\r\n```\r\n\r\n## License\r\nThis software is licensed under the [MIT license](https://github.com/niklashenning/pyqttoast/blob/master/LICENSE).\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Enhanced fork of pyqt-toast-notification with additional features and improvements",
"version": "2.0.0",
"project_urls": {
"Bug Reports": "https://github.com/Cassianvale/pyqttoast/issues",
"Documentation": "https://github.com/Cassianvale/pyqttoast/blob/main/README.md",
"Homepage": "https://github.com/Cassianvale/pyqttoast",
"Original Project": "https://github.com/niklashenning/pyqttoast",
"Repository": "https://github.com/Cassianvale/pyqttoast"
},
"split_keywords": [
"python",
" pyqt",
" qt",
" toast",
" notification",
" enhanced",
" fork"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c0f4d2c99c6672d377781ad11c62dcbf00b55e31494357a90e774c54eeae7009",
"md5": "0edca97aa61450b91ab1ed4559daf07f",
"sha256": "726d8440e87384afd89948085966cb9a025683fd3872cdf29d08293f0de7dc75"
},
"downloads": -1,
"filename": "pyqttoast_enhanced-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0edca97aa61450b91ab1ed4559daf07f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 45944,
"upload_time": "2025-08-15T09:13:01",
"upload_time_iso_8601": "2025-08-15T09:13:01.603352Z",
"url": "https://files.pythonhosted.org/packages/c0/f4/d2c99c6672d377781ad11c62dcbf00b55e31494357a90e774c54eeae7009/pyqttoast_enhanced-2.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a91b2c474c41d443a6aaccb19a019009c8b6c593eae970d9bd994893b3fec791",
"md5": "a9eb148c708238e5451ef62a02983117",
"sha256": "c289761990636c8e8c460350b4375d6859517ec73b43aa732292c08b9fd56960"
},
"downloads": -1,
"filename": "pyqttoast_enhanced-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "a9eb148c708238e5451ef62a02983117",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 79503,
"upload_time": "2025-08-15T09:13:03",
"upload_time_iso_8601": "2025-08-15T09:13:03.586570Z",
"url": "https://files.pythonhosted.org/packages/a9/1b/2c474c41d443a6aaccb19a019009c8b6c593eae970d9bd994893b3fec791/pyqttoast_enhanced-2.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-15 09:13:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Cassianvale",
"github_project": "pyqttoast",
"travis_ci": false,
"coveralls": true,
"github_actions": false,
"requirements": [
{
"name": "QtPy",
"specs": [
[
">=",
"2.4.1"
]
]
}
],
"lcname": "pyqttoast-enhanced"
}