# Custom UI Components for PyQt6
[](https://badge.fury.io/py/custom-ui-pyqt6)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
Modern, reusable PyQt6 UI components with glassmorphism effects and smooth animations. Perfect for building beautiful, modern desktop applications.
## Features
✨ **Modern Design**
- Gradient backgrounds
- Semi-transparent glassmorphism effects
- Smooth hover transitions
- Professional typography
🎯 **User-Friendly**
- Draggable windows
- Clear visual hierarchy
- Intuitive interactions
- Responsive feedback
🔄 **Reusable**
- Easy to integrate into any PyQt6 project
- Customizable colors and styles
- Modular components
- Well-documented
🎨 **Themeable**
- 5 predefined color themes
- Runtime theme switching
- Custom color support
- Flexible styling system
## Installation
Install from PyPI:
```bash
pip install custom-ui-pyqt6
```
Or install from source:
```bash
git clone https://github.com/yourusername/custom-ui-pyqt6.git
cd custom-ui-pyqt6
pip install -e .
```
## Quick Start
### Basic Window Setup
```python
import sys
from PyQt6.QtWidgets import QApplication, QPushButton, QLabel
from PyQt6.QtGui import QFont
from custom_ui_package import CustomMainWindow
class MyApp(CustomMainWindow):
def __init__(self):
super().__init__(
title='My Application',
width=600,
height=750,
theme='dark_blue'
)
# Add content
title = QLabel('Welcome!')
title.setFont(QFont('Segoe UI', 20, QFont.Weight.Bold))
self.add_content(title)
btn = QPushButton('Click Me')
self.add_content(btn)
self.add_stretch()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec())
```
## Components
### CustomMainWindow
A frameless main window with custom title bar and customizable styling.
```python
from custom_ui_package import CustomMainWindow
window = CustomMainWindow(
title='My App',
width=600,
height=750,
theme='dark_purple'
)
# Change theme at runtime
window.set_theme('dark_green')
```
### CustomDropdown
A modern dropdown widget with glassmorphism effects.
```python
from custom_ui_package import CustomDropdown
dropdown = CustomDropdown()
dropdown.add_items_with_icons({
'Option 1': 'value1',
'Option 2': 'value2',
'Option 3': 'value3'
})
selected_text = dropdown.get_selected_text()
```
### CustomMessageDialog
A modern message dialog with draggable interface.
```python
from custom_ui_package import CustomMessageDialog
dialog = CustomMessageDialog(
'Information',
'This is an info message',
'info',
parent_widget
)
dialog.exec()
```
### CustomTitleBar
A custom title bar for frameless windows.
```python
from custom_ui_package import CustomTitleBar
title_bar = CustomTitleBar(
parent=window,
title="My Application",
icon_path=None,
show_minimize=True,
show_close=True
)
```
## Themes
Available predefined themes:
- **dark_blue** (default) - Modern blue gradient with indigo buttons
- **dark_purple** - Purple gradient with vibrant purple buttons
- **dark_green** - Green gradient with emerald buttons
- **dark_orange** - Orange gradient with warm orange buttons
- **dark_red** - Red gradient with crimson buttons
```python
# Use a theme
window = CustomMainWindow(theme='dark_purple')
# Change theme at runtime
window.set_theme('dark_green')
# Custom colors
window.set_custom_colors({
'button_start': '#ff6b6b',
'button_end': '#ee5a6f'
})
```
## Color Palette
| Color | Hex | Usage |
|-------|-----|-------|
| Primary | #6366f1 | Indigo - Main buttons |
| Secondary | #4f46e5 | Purple - Button end gradient |
| Accent | #a5f3fc | Cyan - Secondary text |
| Background | #0a0e27 | Dark Blue - Window background |
| Text Primary | #e8f0ff | Light Blue - Main text |
| Text Secondary | #a5f3fc | Cyan - Secondary text |
| Warning | #eab308 | Yellow - Warning elements |
| Error | #ef4444 | Red - Error elements |
| Success | #10b981 | Green - Success elements |
## Customization
All components support extensive customization:
- **CustomMainWindow**: Use `set_theme()` and `set_custom_colors()` to customize
- **CustomDropdown**: Use `set_custom_colors()` for color customization
- **CustomMessageDialog**: Pass different `icon_type` values: "info", "warning", "error"
- **CustomTitleBar**: Customize title, icon, and button visibility
## Components Overview
| Component | Purpose | Features |
|-----------|---------|----------|
| `CustomMainWindow` | Main application window | Frameless, custom title bar, themeable, draggable |
| `CustomDropdown` | Standard dropdown | Glassmorphism, smooth animations, custom colors |
| `CustomDropdownCompact` | Compact dropdown | Smaller height variant |
| `CustomDropdownLarge` | Large dropdown | Larger height variant |
| `CustomMessageDialog` | Message dialog | Frameless, draggable, icon support |
| `CustomTitleBar` | Window title bar | Minimize/close buttons, draggable, icon support |
## Requirements
- Python 3.8+
- PyQt6 >= 6.0.0
## Documentation
For detailed documentation, see:
- **DOCUMENTATION.md** - Complete user guide with examples
- **SETUP_AND_PUBLISHING.md** - Setup and PyPI publishing guide
- **CHANGELOG.md** - Version history
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Support
If you encounter any issues or have questions, please open an issue on the [GitHub repository](https://github.com/yourusername/custom-ui-pyqt6/issues).
---
**Happy building! 🚀**
Raw data
{
"_id": null,
"home_page": "https://github.com/yourusername/custom-ui-pyqt6",
"name": "custom-ui-pyqt6",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "pyqt6, ui, components, glassmorphism, modern, design",
"author": "CrypterENC",
"author_email": "CrypterENC <a95899003@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/25/af/ac328960e6c556c2ad3209b2a25766dab83fa1fd35877a8d616bd90fb5dd/custom_ui_pyqt6-1.0.0.tar.gz",
"platform": null,
"description": "# Custom UI Components for PyQt6\r\n\r\n[](https://badge.fury.io/py/custom-ui-pyqt6)\r\n[](https://www.python.org/downloads/)\r\n[](https://opensource.org/licenses/MIT)\r\n\r\nModern, reusable PyQt6 UI components with glassmorphism effects and smooth animations. Perfect for building beautiful, modern desktop applications.\r\n\r\n## Features\r\n\r\n\u2728 **Modern Design**\r\n- Gradient backgrounds\r\n- Semi-transparent glassmorphism effects\r\n- Smooth hover transitions\r\n- Professional typography\r\n\r\n\ud83c\udfaf **User-Friendly**\r\n- Draggable windows\r\n- Clear visual hierarchy\r\n- Intuitive interactions\r\n- Responsive feedback\r\n\r\n\ud83d\udd04 **Reusable**\r\n- Easy to integrate into any PyQt6 project\r\n- Customizable colors and styles\r\n- Modular components\r\n- Well-documented\r\n\r\n\ud83c\udfa8 **Themeable**\r\n- 5 predefined color themes\r\n- Runtime theme switching\r\n- Custom color support\r\n- Flexible styling system\r\n\r\n## Installation\r\n\r\nInstall from PyPI:\r\n\r\n```bash\r\npip install custom-ui-pyqt6\r\n```\r\n\r\nOr install from source:\r\n\r\n```bash\r\ngit clone https://github.com/yourusername/custom-ui-pyqt6.git\r\ncd custom-ui-pyqt6\r\npip install -e .\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Window Setup\r\n\r\n```python\r\nimport sys\r\nfrom PyQt6.QtWidgets import QApplication, QPushButton, QLabel\r\nfrom PyQt6.QtGui import QFont\r\nfrom custom_ui_package import CustomMainWindow\r\n\r\nclass MyApp(CustomMainWindow):\r\n def __init__(self):\r\n super().__init__(\r\n title='My Application',\r\n width=600,\r\n height=750,\r\n theme='dark_blue'\r\n )\r\n \r\n # Add content\r\n title = QLabel('Welcome!')\r\n title.setFont(QFont('Segoe UI', 20, QFont.Weight.Bold))\r\n self.add_content(title)\r\n \r\n btn = QPushButton('Click Me')\r\n self.add_content(btn)\r\n \r\n self.add_stretch()\r\n\r\nif __name__ == '__main__':\r\n app = QApplication(sys.argv)\r\n window = MyApp()\r\n window.show()\r\n sys.exit(app.exec())\r\n```\r\n\r\n## Components\r\n\r\n### CustomMainWindow\r\n\r\nA frameless main window with custom title bar and customizable styling.\r\n\r\n```python\r\nfrom custom_ui_package import CustomMainWindow\r\n\r\nwindow = CustomMainWindow(\r\n title='My App',\r\n width=600,\r\n height=750,\r\n theme='dark_purple'\r\n)\r\n\r\n# Change theme at runtime\r\nwindow.set_theme('dark_green')\r\n```\r\n\r\n### CustomDropdown\r\n\r\nA modern dropdown widget with glassmorphism effects.\r\n\r\n```python\r\nfrom custom_ui_package import CustomDropdown\r\n\r\ndropdown = CustomDropdown()\r\ndropdown.add_items_with_icons({\r\n 'Option 1': 'value1',\r\n 'Option 2': 'value2',\r\n 'Option 3': 'value3'\r\n})\r\n\r\nselected_text = dropdown.get_selected_text()\r\n```\r\n\r\n### CustomMessageDialog\r\n\r\nA modern message dialog with draggable interface.\r\n\r\n```python\r\nfrom custom_ui_package import CustomMessageDialog\r\n\r\ndialog = CustomMessageDialog(\r\n 'Information',\r\n 'This is an info message',\r\n 'info',\r\n parent_widget\r\n)\r\ndialog.exec()\r\n```\r\n\r\n### CustomTitleBar\r\n\r\nA custom title bar for frameless windows.\r\n\r\n```python\r\nfrom custom_ui_package import CustomTitleBar\r\n\r\ntitle_bar = CustomTitleBar(\r\n parent=window,\r\n title=\"My Application\",\r\n icon_path=None,\r\n show_minimize=True,\r\n show_close=True\r\n)\r\n```\r\n\r\n## Themes\r\n\r\nAvailable predefined themes:\r\n\r\n- **dark_blue** (default) - Modern blue gradient with indigo buttons\r\n- **dark_purple** - Purple gradient with vibrant purple buttons\r\n- **dark_green** - Green gradient with emerald buttons\r\n- **dark_orange** - Orange gradient with warm orange buttons\r\n- **dark_red** - Red gradient with crimson buttons\r\n\r\n```python\r\n# Use a theme\r\nwindow = CustomMainWindow(theme='dark_purple')\r\n\r\n# Change theme at runtime\r\nwindow.set_theme('dark_green')\r\n\r\n# Custom colors\r\nwindow.set_custom_colors({\r\n 'button_start': '#ff6b6b',\r\n 'button_end': '#ee5a6f'\r\n})\r\n```\r\n\r\n## Color Palette\r\n\r\n| Color | Hex | Usage |\r\n|-------|-----|-------|\r\n| Primary | #6366f1 | Indigo - Main buttons |\r\n| Secondary | #4f46e5 | Purple - Button end gradient |\r\n| Accent | #a5f3fc | Cyan - Secondary text |\r\n| Background | #0a0e27 | Dark Blue - Window background |\r\n| Text Primary | #e8f0ff | Light Blue - Main text |\r\n| Text Secondary | #a5f3fc | Cyan - Secondary text |\r\n| Warning | #eab308 | Yellow - Warning elements |\r\n| Error | #ef4444 | Red - Error elements |\r\n| Success | #10b981 | Green - Success elements |\r\n\r\n## Customization\r\n\r\nAll components support extensive customization:\r\n\r\n- **CustomMainWindow**: Use `set_theme()` and `set_custom_colors()` to customize\r\n- **CustomDropdown**: Use `set_custom_colors()` for color customization\r\n- **CustomMessageDialog**: Pass different `icon_type` values: \"info\", \"warning\", \"error\"\r\n- **CustomTitleBar**: Customize title, icon, and button visibility\r\n\r\n## Components Overview\r\n\r\n| Component | Purpose | Features |\r\n|-----------|---------|----------|\r\n| `CustomMainWindow` | Main application window | Frameless, custom title bar, themeable, draggable |\r\n| `CustomDropdown` | Standard dropdown | Glassmorphism, smooth animations, custom colors |\r\n| `CustomDropdownCompact` | Compact dropdown | Smaller height variant |\r\n| `CustomDropdownLarge` | Large dropdown | Larger height variant |\r\n| `CustomMessageDialog` | Message dialog | Frameless, draggable, icon support |\r\n| `CustomTitleBar` | Window title bar | Minimize/close buttons, draggable, icon support |\r\n\r\n## Requirements\r\n\r\n- Python 3.8+\r\n- PyQt6 >= 6.0.0\r\n\r\n## Documentation\r\n\r\nFor detailed documentation, see:\r\n\r\n- **DOCUMENTATION.md** - Complete user guide with examples\r\n- **SETUP_AND_PUBLISHING.md** - Setup and PyPI publishing guide\r\n- **CHANGELOG.md** - Version history\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Support\r\n\r\nIf you encounter any issues or have questions, please open an issue on the [GitHub repository](https://github.com/yourusername/custom-ui-pyqt6/issues).\r\n\r\n---\r\n\r\n**Happy building! \ud83d\ude80**\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Modern PyQt6 UI components with glassmorphism effects and smooth animations",
"version": "1.0.0",
"project_urls": {
"Bug Tracker": "https://github.com/yourusername/custom-ui-pyqt6/issues",
"Documentation": "https://github.com/yourusername/custom-ui-pyqt6#readme",
"Homepage": "https://github.com/yourusername/custom-ui-pyqt6",
"Repository": "https://github.com/yourusername/custom-ui-pyqt6"
},
"split_keywords": [
"pyqt6",
" ui",
" components",
" glassmorphism",
" modern",
" design"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "df967dff37db035af49cc2a29ccd82b896fb9067122fc7f1a034f31475884aee",
"md5": "f26345a997431fab34e886abf25ed0cb",
"sha256": "66816050082cf8cd9c5a6539e578b6914e562c100a4cb417074e239bdebc069e"
},
"downloads": -1,
"filename": "custom_ui_pyqt6-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f26345a997431fab34e886abf25ed0cb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14127,
"upload_time": "2025-11-04T06:02:07",
"upload_time_iso_8601": "2025-11-04T06:02:07.649688Z",
"url": "https://files.pythonhosted.org/packages/df/96/7dff37db035af49cc2a29ccd82b896fb9067122fc7f1a034f31475884aee/custom_ui_pyqt6-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "25afac328960e6c556c2ad3209b2a25766dab83fa1fd35877a8d616bd90fb5dd",
"md5": "0c335cdd428639d7c10846631641f7e0",
"sha256": "57e07ab00797599415165ac911854ba1f85cec93479541a2fc4ddded3138ab6d"
},
"downloads": -1,
"filename": "custom_ui_pyqt6-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "0c335cdd428639d7c10846631641f7e0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 14815,
"upload_time": "2025-11-04T06:02:08",
"upload_time_iso_8601": "2025-11-04T06:02:08.946151Z",
"url": "https://files.pythonhosted.org/packages/25/af/ac328960e6c556c2ad3209b2a25766dab83fa1fd35877a8d616bd90fb5dd/custom_ui_pyqt6-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-04 06:02:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "custom-ui-pyqt6",
"github_not_found": true,
"lcname": "custom-ui-pyqt6"
}