pyqttoast-enhanced


Namepyqttoast-enhanced JSON
Version 2.0.0 PyPI version JSON
download
home_pagehttps://github.com/Cassianvale/pyqttoast
SummaryEnhanced fork of pyqt-toast-notification with additional features and improvements
upload_time2025-08-15 09:13:03
maintainerNone
docs_urlNone
authorCassianVale
requires_python>=3.7
licenseNone
keywords python pyqt qt toast notification enhanced fork
VCS
bugtrack_url
requirements QtPy
Travis-CI No Travis.
coveralls test coverage
            <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" />

[![PyPI](https://img.shields.io/badge/pypi-v2.0.0-blue)](https://pypi.org/project/pyqttoast-enhanced/)
[![Python](https://img.shields.io/badge/python-3.7+-blue)](https://github.com/Cassianvale/pyqttoast)
[![Build](https://img.shields.io/badge/build-passing-neon)](https://github.com/Cassianvale/pyqttoast)
[![Coverage](https://img.shields.io/badge/coverage-94%25-green)](https://github.com/Cassianvale/pyqttoast)
[![License](https://img.shields.io/badge/license-MIT-green)](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>

![pyqttoast](https://github.com/niklashenning/pyqt-toast/assets/58544929/c104f10e-08df-4665-98d8-3785822a20dc)

## ✨ 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[![PyPI](https://img.shields.io/badge/pypi-v2.0.0-blue)](https://pypi.org/project/pyqttoast-enhanced/)\r\n[![Python](https://img.shields.io/badge/python-3.7+-blue)](https://github.com/Cassianvale/pyqttoast)\r\n[![Build](https://img.shields.io/badge/build-passing-neon)](https://github.com/Cassianvale/pyqttoast)\r\n[![Coverage](https://img.shields.io/badge/coverage-94%25-green)](https://github.com/Cassianvale/pyqttoast)\r\n[![License](https://img.shields.io/badge/license-MIT-green)](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![pyqttoast](https://github.com/niklashenning/pyqt-toast/assets/58544929/c104f10e-08df-4665-98d8-3785822a20dc)\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"
}
        
Elapsed time: 0.72555s