Name | EzQt-Widgets JSON |
Version |
2.1.1
JSON |
| download |
home_page | None |
Summary | Une collection de widgets Qt personnalisés et réutilisables pour PySide6. Fournit des composants graphiques avancés, réutilisables et stylés pour faciliter le développement d'interfaces modernes et ergonomiques. |
upload_time | 2025-07-27 11:17:51 |
maintainer | None |
docs_url | None |
author | None |
requires_python | <3.13,>=3.9 |
license | MIT |
keywords |
qt
pyside6
widgets
gui
interface
components
ui
desktop
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# 🎨 EzQt_Widgets
Une collection de widgets Qt personnalisés et réutilisables pour PySide6.
## 📦 **Installation**
```bash
pip install ezqt_widgets
```
## 🚀 **Utilisation Rapide**
```python
from PySide6.QtWidgets import QApplication
from ezqt_widgets.button import IconButton, DateButton, LoaderButton
from ezqt_widgets.label import ClickableTagLabel, FramedLabel, HoverLabel, IndicatorLabel
from ezqt_widgets.input import AutoCompleteInput, SearchInput, PasswordInput
from ezqt_widgets.misc import CircularTimer, OptionSelector, ToggleIcon, ToggleSwitch
app = QApplication([])
# Widgets bouton
icon_btn = IconButton(icon="path/to/icon.png", text="Mon Bouton")
date_btn = DateButton(date="2024-01-01")
loader_btn = LoaderButton(text="Charger...")
# Widgets label
tag_label = ClickableTagLabel(name="Tag Cliquable")
framed_label = FramedLabel(text="Label Encadré")
hover_label = HoverLabel(text="Label avec Hover")
indicator_label = IndicatorLabel(status="online")
# Widgets input
search_input = SearchInput(placeholder="Rechercher...")
password_input = PasswordInput(placeholder="Mot de passe")
# Widgets misc
timer = CircularTimer(duration=60)
toggle_switch = ToggleSwitch(checked=True)
app.exec()
```
## 📚 **Documentation**
- **Documentation complète** : [docs/](docs/)
- **Guide de style** : [docs/STYLE_GUIDE.md](docs/STYLE_GUIDE.md)
- **Changelog** : [docs/CHANGELOG.md](docs/CHANGELOG.md)
## 🧪 **Tests**
### **Exécution des Tests**
```bash
# Tous les tests
python tests/run_tests.py --type unit
# Tests spécifiques
python -m pytest tests/unit/test_button/ -v
python -m pytest tests/unit/test_label/ -v
```
### **Documentation des Tests**
- **Guide rapide** : [docs/QUICK_START_TESTS.md](docs/QUICK_START_TESTS.md)
- **Documentation complète** : [docs/tests/](docs/tests/)
## 📊 **Statistiques des Tests**
- **Widgets Bouton** : 59 tests (56 passent, 3 skipped)
- **Widgets Label** : 70 tests (67 passent, 3 skipped)
- **Widgets Input** : 112 tests (111 passent, 1 skipped)
- **Widgets Misc** : 41 tests ✅
- **Tests de Base** : 3 tests ✅
- **Total** : 262 tests (254 passent, 8 skipped)
## 🎯 **Widgets Disponibles**
### **Boutons**
- `IconButton` - Bouton avec icône personnalisable
- `DateButton` - Sélecteur de date avec calendrier
- `LoaderButton` - Bouton avec états de chargement
### **Labels**
- `ClickableTagLabel` - Tag cliquable avec toggle
- `FramedLabel` - Label avec cadre personnalisable
- `HoverLabel` - Label avec effets au survol
- `IndicatorLabel` - Indicateur de statut avec LED
### **Inputs**
- `AutoCompleteInput` - Champ de saisie avec autocomplétion
- `SearchInput` - Champ de recherche avec historique
- `TabReplaceTextEdit` - Éditeur de texte avec remplacement de tabulations
- `PasswordInput` - Champ de mot de passe avec barre de force
### **Misc**
- `CircularTimer` - Timer circulaire avec animation
- `OptionSelector` - Sélecteur d'options avec interface moderne
- `ToggleIcon` - Icône basculante avec états multiples
- `ToggleSwitch` - Interrupteur moderne avec animation
## 🔧 **Développement**
### **Structure du Projet**
```
ezqt_widgets/
├── README.md # Ce fichier
├── docs/ # Documentation
│ ├── README.md # Index de documentation
│ ├── STYLE_GUIDE.md # Guide de style
│ ├── CHANGELOG.md # Historique des versions
│ ├── QUICK_START_TESTS.md # Guide rapide des tests
│ └── tests/ # Documentation des tests
├── tests/ # Tests
│ ├── run_tests.py # Script d'exécution des tests
│ ├── conftest.py # Configuration pytest
│ └── unit/ # Tests unitaires
├── ezqt_widgets/ # Code source
└── pyproject.toml # Configuration du projet
```
### **Installation pour Développement**
```bash
git clone <repository>
cd ezqt_widgets
pip install -e .
pip install -e ".[dev]"
```
## 📄 **Licence**
Ce projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de détails.
---
**État des tests :** 🟢 **OPÉRATIONNEL** (254/262 tests passent, 8 skipped)
Raw data
{
"_id": null,
"home_page": null,
"name": "EzQt-Widgets",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.9",
"maintainer_email": null,
"keywords": "qt, pyside6, widgets, gui, interface, components, ui, desktop",
"author": null,
"author_email": "Florian Salort <floriansalort@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/fa/2f/ad457fea6b2ba9746e0690a0398c9bfd466263993609d20d9661f1b9823f/ezqt_widgets-2.1.1.tar.gz",
"platform": null,
"description": "# \ud83c\udfa8 EzQt_Widgets\r\n\r\nUne collection de widgets Qt personnalis\u00e9s et r\u00e9utilisables pour PySide6.\r\n\r\n## \ud83d\udce6 **Installation**\r\n\r\n```bash\r\npip install ezqt_widgets\r\n```\r\n\r\n## \ud83d\ude80 **Utilisation Rapide**\r\n\r\n```python\r\nfrom PySide6.QtWidgets import QApplication\r\nfrom ezqt_widgets.button import IconButton, DateButton, LoaderButton\r\nfrom ezqt_widgets.label import ClickableTagLabel, FramedLabel, HoverLabel, IndicatorLabel\r\nfrom ezqt_widgets.input import AutoCompleteInput, SearchInput, PasswordInput\r\nfrom ezqt_widgets.misc import CircularTimer, OptionSelector, ToggleIcon, ToggleSwitch\r\n\r\napp = QApplication([])\r\n\r\n# Widgets bouton\r\nicon_btn = IconButton(icon=\"path/to/icon.png\", text=\"Mon Bouton\")\r\ndate_btn = DateButton(date=\"2024-01-01\")\r\nloader_btn = LoaderButton(text=\"Charger...\")\r\n\r\n# Widgets label\r\ntag_label = ClickableTagLabel(name=\"Tag Cliquable\")\r\nframed_label = FramedLabel(text=\"Label Encadr\u00e9\")\r\nhover_label = HoverLabel(text=\"Label avec Hover\")\r\nindicator_label = IndicatorLabel(status=\"online\")\r\n\r\n# Widgets input\r\nsearch_input = SearchInput(placeholder=\"Rechercher...\")\r\npassword_input = PasswordInput(placeholder=\"Mot de passe\")\r\n\r\n# Widgets misc\r\ntimer = CircularTimer(duration=60)\r\ntoggle_switch = ToggleSwitch(checked=True)\r\n\r\napp.exec()\r\n```\r\n\r\n## \ud83d\udcda **Documentation**\r\n\r\n- **Documentation compl\u00e8te** : [docs/](docs/)\r\n- **Guide de style** : [docs/STYLE_GUIDE.md](docs/STYLE_GUIDE.md)\r\n- **Changelog** : [docs/CHANGELOG.md](docs/CHANGELOG.md)\r\n\r\n## \ud83e\uddea **Tests**\r\n\r\n### **Ex\u00e9cution des Tests**\r\n```bash\r\n# Tous les tests\r\npython tests/run_tests.py --type unit\r\n\r\n# Tests sp\u00e9cifiques\r\npython -m pytest tests/unit/test_button/ -v\r\npython -m pytest tests/unit/test_label/ -v\r\n```\r\n\r\n### **Documentation des Tests**\r\n- **Guide rapide** : [docs/QUICK_START_TESTS.md](docs/QUICK_START_TESTS.md)\r\n- **Documentation compl\u00e8te** : [docs/tests/](docs/tests/)\r\n\r\n## \ud83d\udcca **Statistiques des Tests**\r\n\r\n- **Widgets Bouton** : 59 tests (56 passent, 3 skipped)\r\n- **Widgets Label** : 70 tests (67 passent, 3 skipped)\r\n- **Widgets Input** : 112 tests (111 passent, 1 skipped)\r\n- **Widgets Misc** : 41 tests \u2705\r\n- **Tests de Base** : 3 tests \u2705\r\n- **Total** : 262 tests (254 passent, 8 skipped)\r\n\r\n## \ud83c\udfaf **Widgets Disponibles**\r\n\r\n### **Boutons**\r\n- `IconButton` - Bouton avec ic\u00f4ne personnalisable\r\n- `DateButton` - S\u00e9lecteur de date avec calendrier\r\n- `LoaderButton` - Bouton avec \u00e9tats de chargement\r\n\r\n### **Labels**\r\n- `ClickableTagLabel` - Tag cliquable avec toggle\r\n- `FramedLabel` - Label avec cadre personnalisable\r\n- `HoverLabel` - Label avec effets au survol\r\n- `IndicatorLabel` - Indicateur de statut avec LED\r\n\r\n### **Inputs**\r\n- `AutoCompleteInput` - Champ de saisie avec autocompl\u00e9tion\r\n- `SearchInput` - Champ de recherche avec historique\r\n- `TabReplaceTextEdit` - \u00c9diteur de texte avec remplacement de tabulations\r\n- `PasswordInput` - Champ de mot de passe avec barre de force\r\n\r\n### **Misc**\r\n- `CircularTimer` - Timer circulaire avec animation\r\n- `OptionSelector` - S\u00e9lecteur d'options avec interface moderne\r\n- `ToggleIcon` - Ic\u00f4ne basculante avec \u00e9tats multiples\r\n- `ToggleSwitch` - Interrupteur moderne avec animation\r\n\r\n## \ud83d\udd27 **D\u00e9veloppement**\r\n\r\n### **Structure du Projet**\r\n```\r\nezqt_widgets/\r\n\u251c\u2500\u2500 README.md # Ce fichier\r\n\u251c\u2500\u2500 docs/ # Documentation\r\n\u2502 \u251c\u2500\u2500 README.md # Index de documentation\r\n\u2502 \u251c\u2500\u2500 STYLE_GUIDE.md # Guide de style\r\n\u2502 \u251c\u2500\u2500 CHANGELOG.md # Historique des versions\r\n\u2502 \u251c\u2500\u2500 QUICK_START_TESTS.md # Guide rapide des tests\r\n\u2502 \u2514\u2500\u2500 tests/ # Documentation des tests\r\n\u251c\u2500\u2500 tests/ # Tests\r\n\u2502 \u251c\u2500\u2500 run_tests.py # Script d'ex\u00e9cution des tests\r\n\u2502 \u251c\u2500\u2500 conftest.py # Configuration pytest\r\n\u2502 \u2514\u2500\u2500 unit/ # Tests unitaires\r\n\u251c\u2500\u2500 ezqt_widgets/ # Code source\r\n\u2514\u2500\u2500 pyproject.toml # Configuration du projet\r\n```\r\n\r\n### **Installation pour D\u00e9veloppement**\r\n```bash\r\ngit clone <repository>\r\ncd ezqt_widgets\r\npip install -e .\r\npip install -e \".[dev]\"\r\n```\r\n\r\n## \ud83d\udcc4 **Licence**\r\n\r\nCe projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de d\u00e9tails.\r\n\r\n---\r\n\r\n**\u00c9tat des tests :** \ud83d\udfe2 **OP\u00c9RATIONNEL** (254/262 tests passent, 8 skipped)\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Une collection de widgets Qt personnalis\u00e9s et r\u00e9utilisables pour PySide6. Fournit des composants graphiques avanc\u00e9s, r\u00e9utilisables et styl\u00e9s pour faciliter le d\u00e9veloppement d'interfaces modernes et ergonomiques.",
"version": "2.1.1",
"project_urls": null,
"split_keywords": [
"qt",
" pyside6",
" widgets",
" gui",
" interface",
" components",
" ui",
" desktop"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cd827bc087bca88d4551cf35df26e18f1261fbe8e00af34e559b719746e4afbd",
"md5": "9cdbdaf1f389e653d80981772c8a3c19",
"sha256": "27dc5aee5a1637be1be5b05934184b6c59f8f9ee025bbaba86f5d7163e47e499"
},
"downloads": -1,
"filename": "ezqt_widgets-2.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9cdbdaf1f389e653d80981772c8a3c19",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.9",
"size": 52214,
"upload_time": "2025-07-27T11:17:49",
"upload_time_iso_8601": "2025-07-27T11:17:49.647757Z",
"url": "https://files.pythonhosted.org/packages/cd/82/7bc087bca88d4551cf35df26e18f1261fbe8e00af34e559b719746e4afbd/ezqt_widgets-2.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fa2fad457fea6b2ba9746e0690a0398c9bfd466263993609d20d9661f1b9823f",
"md5": "2fc2fc02df6aecea9c9a6d1db1f7e16e",
"sha256": "6b4bd4eb8e3bfcde452782994a7bc30858ca06f161dbf22cbc12e77a793d632e"
},
"downloads": -1,
"filename": "ezqt_widgets-2.1.1.tar.gz",
"has_sig": false,
"md5_digest": "2fc2fc02df6aecea9c9a6d1db1f7e16e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.9",
"size": 74766,
"upload_time": "2025-07-27T11:17:51",
"upload_time_iso_8601": "2025-07-27T11:17:51.010133Z",
"url": "https://files.pythonhosted.org/packages/fa/2f/ad457fea6b2ba9746e0690a0398c9bfd466263993609d20d9661f1b9823f/ezqt_widgets-2.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-27 11:17:51",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "ezqt-widgets"
}