oh-my-gui 0.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. oh_my_gui-0.5.1/LICENSE +21 -0
  2. oh_my_gui-0.5.1/PKG-INFO +257 -0
  3. oh_my_gui-0.5.1/README.md +212 -0
  4. oh_my_gui-0.5.1/oh_my_gui.egg-info/PKG-INFO +257 -0
  5. oh_my_gui-0.5.1/oh_my_gui.egg-info/SOURCES.txt +39 -0
  6. oh_my_gui-0.5.1/oh_my_gui.egg-info/dependency_links.txt +1 -0
  7. oh_my_gui-0.5.1/oh_my_gui.egg-info/not-zip-safe +1 -0
  8. oh_my_gui-0.5.1/oh_my_gui.egg-info/requires.txt +4 -0
  9. oh_my_gui-0.5.1/oh_my_gui.egg-info/top_level.txt +1 -0
  10. oh_my_gui-0.5.1/ohmygui/__init__.py +45 -0
  11. oh_my_gui-0.5.1/ohmygui/core/__init__.py +8 -0
  12. oh_my_gui-0.5.1/ohmygui/core/application.py +105 -0
  13. oh_my_gui-0.5.1/ohmygui/core/mouse.py +18 -0
  14. oh_my_gui-0.5.1/ohmygui/core/window.py +247 -0
  15. oh_my_gui-0.5.1/ohmygui/dialog/__init__.py +8 -0
  16. oh_my_gui-0.5.1/ohmygui/dialog/base.py +53 -0
  17. oh_my_gui-0.5.1/ohmygui/dialog/basic.py +67 -0
  18. oh_my_gui-0.5.1/ohmygui/dialog/enums.py +9 -0
  19. oh_my_gui-0.5.1/ohmygui/layout/__init__.py +10 -0
  20. oh_my_gui-0.5.1/ohmygui/layout/base.py +70 -0
  21. oh_my_gui-0.5.1/ohmygui/layout/box.py +37 -0
  22. oh_my_gui-0.5.1/ohmygui/layout/form.py +32 -0
  23. oh_my_gui-0.5.1/ohmygui/layout/grid.py +34 -0
  24. oh_my_gui-0.5.1/ohmygui/layout/horizental.py +40 -0
  25. oh_my_gui-0.5.1/ohmygui/layout/vertical.py +36 -0
  26. oh_my_gui-0.5.1/ohmygui/terminal/__init__.py +5 -0
  27. oh_my_gui-0.5.1/ohmygui/terminal/conio.py +85 -0
  28. oh_my_gui-0.5.1/ohmygui/utils/__init__.py +7 -0
  29. oh_my_gui-0.5.1/ohmygui/utils/constants.py +108 -0
  30. oh_my_gui-0.5.1/ohmygui/utils/sleep.py +17 -0
  31. oh_my_gui-0.5.1/ohmygui/utils/sound.py +50 -0
  32. oh_my_gui-0.5.1/ohmygui/utils/utils.py +73 -0
  33. oh_my_gui-0.5.1/ohmygui/widget/__init__.py +9 -0
  34. oh_my_gui-0.5.1/ohmygui/widget/advanced.py +615 -0
  35. oh_my_gui-0.5.1/ohmygui/widget/base.py +150 -0
  36. oh_my_gui-0.5.1/ohmygui/widget/basic.py +201 -0
  37. oh_my_gui-0.5.1/ohmygui/widget/event.py +17 -0
  38. oh_my_gui-0.5.1/ohmygui/widget/extension.py +63 -0
  39. oh_my_gui-0.5.1/pyproject.toml +33 -0
  40. oh_my_gui-0.5.1/setup.cfg +4 -0
  41. oh_my_gui-0.5.1/setup.py +30 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Fishgame Studio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,257 @@
1
+ Metadata-Version: 2.4
2
+ Name: oh-my-gui
3
+ Version: 0.5.1
4
+ Summary: A lightweight GUI library wrapping PySide6 for Python
5
+ Home-page: https://github.com/FishgameStudio/oh-my-gui
6
+ Author: FishgameStudio
7
+ Author-email: FishgameStudio <popxhxh@outlook.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2026 Fishgame Studio
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+
30
+ Keywords: python,gui,oh-my-gui
31
+ Classifier: Programming Language :: Python :: 3
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Operating System :: OS Independent
34
+ Requires-Python: >=3.9
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Requires-Dist: pyside6>=6.11.1
38
+ Requires-Dist: pyperclip>=1.11.0
39
+ Requires-Dist: plyer>=2.1.0
40
+ Requires-Dist: requests>=2.32.5
41
+ Dynamic: author
42
+ Dynamic: home-page
43
+ Dynamic: license-file
44
+ Dynamic: requires-python
45
+
46
+ <div align="center">
47
+
48
+ ![Logo](assets/logo.png)
49
+
50
+
51
+ # OhMyGUI
52
+ > A lightweight GUI library wrapping PySide6 for Python!
53
+
54
+
55
+ ![Stars](https://img.shields.io/github/stars/FishgameStudio/oh-my-gui?style=social)
56
+ ![Forks](https://img.shields.io/github/forks/FishgameStudio/oh-my-gui?style=social)
57
+ ![Watchers](https://img.shields.io/github/watchers/FishgameStudio/oh-my-gui?style=social)
58
+ ![Issues](https://img.shields.io/github/issues/FishgameStudio/oh-my-gui)
59
+ ![PRs](https://img.shields.io/github/issues-pr/FishgameStudio/oh-my-gui)
60
+
61
+ ![LastCommit](https://img.shields.io/github/last-commit/FishgameStudio/oh-my-gui)
62
+ ![Size](https://img.shields.io/github/repo-size/FishgameStudio/oh-my-gui)
63
+ ![Contributors](https://img.shields.io/github/contributors/FishgameStudio/oh-my-gui)
64
+ ![Welcome](https://img.shields.io/badge/PRs%20%26%20Issues-welcome-bluevoilet)
65
+
66
+ ![Version](https://img.shields.io/badge/version-0.5.1-orange)
67
+ ![Qt](https://img.shields.io/badge/Framework-PySide6-52C141)
68
+ [![Python](https://img.shields.io/badge/python-3.14-blue)](https://python.org)
69
+ ![QtVer](https://img.shields.io/badge/Qt-6.11.0-2392DD)
70
+ [![License](https://img.shields.io/github/license/FishgameStudio/oh-my-gui)](LICENSE)
71
+
72
+ </div>
73
+
74
+ <details>
75
+ <summary>Table of Contents</summary>
76
+ <li>
77
+ <a href="#introduction">Introduction</a>
78
+ </li>
79
+ <li>
80
+ <a href="#core-features">Core Features</a>
81
+ </li>
82
+ <li>
83
+ <a href="#suitable-scenarios">Suitable Scenarios</a>
84
+ </li>
85
+ <li>
86
+ <a href="#getting-started">Getting Started</a>
87
+ </li>
88
+ <li>
89
+ <a href="#notice">NOTICE</a>
90
+ </li>
91
+ <li>
92
+ <a href="#roadmap">Roadmap</a>
93
+ </li>
94
+ <li>
95
+ <a href="#contributing">Contributing</a>
96
+ </li>
97
+ <li>
98
+ <a href="#license">License</a>
99
+ </li>
100
+ <li>
101
+ <a href="#contact">Contact</a>
102
+ </li>
103
+ <li>
104
+ <a href="#acknowledgments">Acknowledgments</a>
105
+ </li>
106
+ <li>
107
+ <a href="#conclusion">Conclusion</a>
108
+ </li>
109
+ </details>
110
+
111
+
112
+
113
+ # Introduction
114
+ πŸš€ A lightweight, neatly structured cross-platform general utility library developed based on PySide6 & Python, bundling **window management, widget encapsulation, style control and basic component toolkit**. It is built for GUI rapid development, lightweight desktop application building and personalized component secondary development scenarios.
115
+
116
+ In daily PySide6 GUI development, developers often repeatedly write window creation, widget binding, position adjustment and color style code in different projects. Scattered custom components lack unified encapsulation, inconsistent calling styles lead to high adaptation costs, and most ready-made component frameworks are overly bloated or have strong coupling, which is not friendly for lightweight projects and beginners. There are few concise, decoupled and easy-to-expand basic GUI tool suites that integrate window control and common widgets. To solve these pain points, I developed this project, aiming to build a set of standardized, low-coupling and long-term maintainable basic GUI underlying tool library.
117
+
118
+ This project is highly suitable for being integrated into various PySide6 GUI development projects for the following reasons:
119
+ - Avoid repeated wheel-making for basic logic such as window initialization, widget binding and position setting, allowing developers to focus more on core business and interactive logic.
120
+ - Adopt unified coding specifications, consistent interface calling styles and standardized encapsulation logic, getting rid of the chaos caused by scattered custom widgets.
121
+ - Good cross-platform compatibility, running stably on Windows, Linux and macOS, adapting to common desktop development environments.
122
+ - Follow native PySide6 usage specifications, retain intuitive calling logic while encapsulating complex underlying operations, with high code readability, convenient for debugging, modification and later function iteration.
123
+ - Each functional module is decoupled from each other, supporting selective reference and use, without introducing excess redundant code, and will not increase project volume and runtime overhead.
124
+ - Rich built-in practical capabilities: **window size locking/unlocking, position adjustment, dynamic widget binding, component show/hide, foreground/background color modification, text content management** and other commonly used GUI functions, covering most demands of lightweight GUI development.
125
+
126
+ Certainly, this basic tool library is mainly oriented to conventional lightweight GUI scenarios and does not involve complex advanced functions such as high-customization controls, special animation effects and large-scale client architecture. I will keep maintaining and iterating the project later, continuously enrich component types, optimize underlying logic, fix compatibility problems, and expand more practical auxiliary functions according to actual development needs. All developers are welcome to star the project. You can put forward function suggestions and optimization ideas via Issues, and polish this lightweight GUI basic tool library together. Every use and feedback from users is the driving force for the continuous improvement of this project.
127
+
128
+ ## Core Features
129
+ - ✨ **Native PySide6 Based Implementation**
130
+ Developed relying on standard PySide6 APIs, compatible with mainstream Python versions, simple access and seamless integration into existing PySide6 projects.
131
+ - πŸͺŸ **Full-Featured Window Management**
132
+ Support window title setting, size adjustment, position moving, one-click locking/unlocking window size, and provide native window object escape interface for secondary development.
133
+ - 🧩 **Encapsulated Basic Widget System**
134
+ Complete encapsulation based on native QWidget and QLabel, integrate common operations such as component display/hide, position and size setting, forming a unified basic component system.
135
+ - 🎨 **Convenient Style Control**
136
+ Support dynamic acquisition and modification of component text content, foreground color and background color, simplify style operation code, and avoid repeated writing of style sheets.
137
+ - πŸ”— **Dynamic Widget Binding**
138
+ Realize dynamic creation and binding of widgets, unified management of component stack, flexible addition of multiple UI elements at runtime.
139
+ - πŸ”„ **Cross-Platform Stable Operation**
140
+ Follow PySide6 cross-platform design ideas, no platform-specific code, all core functions run consistently on Windows / Linux / macOS.
141
+ - πŸ“¦ **Module Decoupling & Flexible Quotation**
142
+ Window management and basic widget modules are completely decoupled, supporting independent introduction and separate use, matching different project development demands flexibly.
143
+ - 🧹 **Clear Structure & Easy Expansion**
144
+ Hierarchical code design, clear function classification, reserved expansion interfaces, convenient for users to expand custom widgets and extend personalized functions on the existing framework.
145
+ - 🎯 **Lightweight & Low Overhead**
146
+ Focus on practical basic GUI capabilities, discard redundant complicated functions, occupy few system resources, and adapt to small tools, desktop gadgets and other lightweight projects.
147
+
148
+ ## Suitable Scenarios
149
+ - Personal daily PySide6 learning practice and small GUI tool development
150
+ - Rapid development of lightweight desktop gadgets and console auxiliary clients
151
+ - Simple desktop application construction that requires unified management of basic UI components
152
+ - Beginner's PySide6 programming learning and code standardization training
153
+ - Unify basic GUI underlying code of small and medium-sized projects to reduce repeated development
154
+ - Secondary development and function expansion based on basic encapsulated widgets
155
+ - Development of simple upper computer auxiliary interface and small interactive program
156
+ - Finishing and sorting of daily accumulated PySide6 basic GUI code snippets
157
+
158
+ ## Getting Started
159
+ [**Explore the docs >>>**](docs)
160
+
161
+ [**Explore the examples >>>**](example)
162
+
163
+ Here is an example to run.
164
+
165
+ At first, please clone the repository on your local computer:
166
+ ```bash
167
+ git clone https://github.com/FishgameStudio/oh-my-gui.git
168
+ ```
169
+
170
+ *Please keep the copyright comments in the source ode file while using.*
171
+ *if you modified our source code, please insert these lines into your code:*
172
+ ```python
173
+ # Modified by [Your Name] [Modified Date]
174
+ # Changes: [Modified Content]
175
+ ```
176
+ To use the APIs of this project, please install them down:
177
+ ```bash
178
+ pip install .
179
+ ```
180
+ And you can use the APIs:
181
+ ```python
182
+ import ohmygui.core as core
183
+ import ohmygui.widget as widget
184
+ import ohmygui.layout as layout
185
+
186
+ app = core.App()
187
+ window = core.Window("Horizontal Layout Example", (400, 200))
188
+ layout = layout.HorizentalLayout()
189
+
190
+ layout.add_widget(widget.Text("Hello"))
191
+ layout.add_spacing(20)
192
+ layout.add_widget(widget.Text("World"))
193
+ layout.add_stretch()
194
+ layout.add_widget(widget.Text("!"))
195
+ window.set_layout(layout)
196
+ window.show()
197
+ app.run()
198
+ ```
199
+
200
+
201
+ ## NOTICE
202
+ This project uses **`PySide6`** as the GUI core dependency. Please ensure **`PySide6` is installed** in your Python environment before running or building the project.
203
+
204
+ ## Roadmap
205
+ - [x] **v0.1.0**: Core framework, basic widget, 1 exmaple
206
+ - [x] **v0.2.0**: Basic layout, 3~5 examples, dialog module
207
+ - [x] **v0.3.0**: Basic style control, QML support
208
+ - [x] **v0.4.0**: Optimize layout, complex widgets
209
+ - [x] **v0.5.0**: Fix most bugs, optimize performence, improve docs
210
+ - [ ] **v0.9.0**\[RC Version\]: freeze API
211
+ - [ ] **v1.0.0**\[Official Stable Version\]: launch on PyPI
212
+
213
+ See the [open issues](https://github.com/FishgameStudio/oh-my-gui/issues) for a full list of proposed features (and known issues).
214
+
215
+ ## Contributing
216
+
217
+ Contributions are what make the open source community such an amazing place **to learn, inspire, and create**. Any contributions you make are **greatly appreciated**.
218
+
219
+ If you have a suggestion that would make this better, please **fork the repo** and **create a pull request**. You can also simply open an issue with the tag **"enhancement"**.
220
+ Don't forget to give the project a star! Thanks again!
221
+
222
+ 1. Fork the Project
223
+ 2. Create your Feature Branch (`git checkout -b feat/AmazingFeature`)
224
+ 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
225
+ 4. Push to the Branch (`git push origin feat/AmazingFeature`)
226
+ 5. Open a Pull Request
227
+
228
+ ### Top contributors:
229
+
230
+ <a href="https://github.com/FishgameStudio/oh-my-gui/graphs/contributors">
231
+ <img src="https://contrib.rocks/image?repo=FishgameStudio/oh-my-gui" alt="contrib.rocks image" />
232
+ </a>
233
+
234
+ ## License
235
+
236
+ Distributed under the MIT License. See [LICENSE](LICENSE) for more information.
237
+
238
+
239
+ ## Contact
240
+
241
+ Nicola Grey - [popxhxh@outlook.com](mailto:popxhxh@outlook.com)
242
+
243
+ Project Link: [https://github.com/FishgameStudio/oh-my-gui](https://github.com/FishgameStudio/oh-my-gui)
244
+
245
+
246
+ ## Acknowledgments
247
+
248
+ * [Best-README-Template](https://github.com/othneildrew/Best-README-Template)
249
+ * [PySide6](https://github.com/pyside/pyside-setup)
250
+
251
+
252
+ ## Conclusion
253
+ Hope this lightweight UtilitiesLibrary can assist you in daily C++ development, simplify repetitive basic logic writing, and speed up your project construction efficiency.
254
+
255
+ Every star, fork and sincere feedback means a lot to me. You are warmly welcome to submit issues for bugs feedback and function suggestions, or send pull requests to participate in code optimization and function iteration, so as to polish and improve this utility library together.
256
+
257
+ If you find this project practical and helpful, don’t forget to hit **Star** and **Fork**. All valuable opinions and ideas are **sincerely welcomed**. Thank you very much for your support!
@@ -0,0 +1,212 @@
1
+ <div align="center">
2
+
3
+ ![Logo](assets/logo.png)
4
+
5
+
6
+ # OhMyGUI
7
+ > A lightweight GUI library wrapping PySide6 for Python!
8
+
9
+
10
+ ![Stars](https://img.shields.io/github/stars/FishgameStudio/oh-my-gui?style=social)
11
+ ![Forks](https://img.shields.io/github/forks/FishgameStudio/oh-my-gui?style=social)
12
+ ![Watchers](https://img.shields.io/github/watchers/FishgameStudio/oh-my-gui?style=social)
13
+ ![Issues](https://img.shields.io/github/issues/FishgameStudio/oh-my-gui)
14
+ ![PRs](https://img.shields.io/github/issues-pr/FishgameStudio/oh-my-gui)
15
+
16
+ ![LastCommit](https://img.shields.io/github/last-commit/FishgameStudio/oh-my-gui)
17
+ ![Size](https://img.shields.io/github/repo-size/FishgameStudio/oh-my-gui)
18
+ ![Contributors](https://img.shields.io/github/contributors/FishgameStudio/oh-my-gui)
19
+ ![Welcome](https://img.shields.io/badge/PRs%20%26%20Issues-welcome-bluevoilet)
20
+
21
+ ![Version](https://img.shields.io/badge/version-0.5.1-orange)
22
+ ![Qt](https://img.shields.io/badge/Framework-PySide6-52C141)
23
+ [![Python](https://img.shields.io/badge/python-3.14-blue)](https://python.org)
24
+ ![QtVer](https://img.shields.io/badge/Qt-6.11.0-2392DD)
25
+ [![License](https://img.shields.io/github/license/FishgameStudio/oh-my-gui)](LICENSE)
26
+
27
+ </div>
28
+
29
+ <details>
30
+ <summary>Table of Contents</summary>
31
+ <li>
32
+ <a href="#introduction">Introduction</a>
33
+ </li>
34
+ <li>
35
+ <a href="#core-features">Core Features</a>
36
+ </li>
37
+ <li>
38
+ <a href="#suitable-scenarios">Suitable Scenarios</a>
39
+ </li>
40
+ <li>
41
+ <a href="#getting-started">Getting Started</a>
42
+ </li>
43
+ <li>
44
+ <a href="#notice">NOTICE</a>
45
+ </li>
46
+ <li>
47
+ <a href="#roadmap">Roadmap</a>
48
+ </li>
49
+ <li>
50
+ <a href="#contributing">Contributing</a>
51
+ </li>
52
+ <li>
53
+ <a href="#license">License</a>
54
+ </li>
55
+ <li>
56
+ <a href="#contact">Contact</a>
57
+ </li>
58
+ <li>
59
+ <a href="#acknowledgments">Acknowledgments</a>
60
+ </li>
61
+ <li>
62
+ <a href="#conclusion">Conclusion</a>
63
+ </li>
64
+ </details>
65
+
66
+
67
+
68
+ # Introduction
69
+ πŸš€ A lightweight, neatly structured cross-platform general utility library developed based on PySide6 & Python, bundling **window management, widget encapsulation, style control and basic component toolkit**. It is built for GUI rapid development, lightweight desktop application building and personalized component secondary development scenarios.
70
+
71
+ In daily PySide6 GUI development, developers often repeatedly write window creation, widget binding, position adjustment and color style code in different projects. Scattered custom components lack unified encapsulation, inconsistent calling styles lead to high adaptation costs, and most ready-made component frameworks are overly bloated or have strong coupling, which is not friendly for lightweight projects and beginners. There are few concise, decoupled and easy-to-expand basic GUI tool suites that integrate window control and common widgets. To solve these pain points, I developed this project, aiming to build a set of standardized, low-coupling and long-term maintainable basic GUI underlying tool library.
72
+
73
+ This project is highly suitable for being integrated into various PySide6 GUI development projects for the following reasons:
74
+ - Avoid repeated wheel-making for basic logic such as window initialization, widget binding and position setting, allowing developers to focus more on core business and interactive logic.
75
+ - Adopt unified coding specifications, consistent interface calling styles and standardized encapsulation logic, getting rid of the chaos caused by scattered custom widgets.
76
+ - Good cross-platform compatibility, running stably on Windows, Linux and macOS, adapting to common desktop development environments.
77
+ - Follow native PySide6 usage specifications, retain intuitive calling logic while encapsulating complex underlying operations, with high code readability, convenient for debugging, modification and later function iteration.
78
+ - Each functional module is decoupled from each other, supporting selective reference and use, without introducing excess redundant code, and will not increase project volume and runtime overhead.
79
+ - Rich built-in practical capabilities: **window size locking/unlocking, position adjustment, dynamic widget binding, component show/hide, foreground/background color modification, text content management** and other commonly used GUI functions, covering most demands of lightweight GUI development.
80
+
81
+ Certainly, this basic tool library is mainly oriented to conventional lightweight GUI scenarios and does not involve complex advanced functions such as high-customization controls, special animation effects and large-scale client architecture. I will keep maintaining and iterating the project later, continuously enrich component types, optimize underlying logic, fix compatibility problems, and expand more practical auxiliary functions according to actual development needs. All developers are welcome to star the project. You can put forward function suggestions and optimization ideas via Issues, and polish this lightweight GUI basic tool library together. Every use and feedback from users is the driving force for the continuous improvement of this project.
82
+
83
+ ## Core Features
84
+ - ✨ **Native PySide6 Based Implementation**
85
+ Developed relying on standard PySide6 APIs, compatible with mainstream Python versions, simple access and seamless integration into existing PySide6 projects.
86
+ - πŸͺŸ **Full-Featured Window Management**
87
+ Support window title setting, size adjustment, position moving, one-click locking/unlocking window size, and provide native window object escape interface for secondary development.
88
+ - 🧩 **Encapsulated Basic Widget System**
89
+ Complete encapsulation based on native QWidget and QLabel, integrate common operations such as component display/hide, position and size setting, forming a unified basic component system.
90
+ - 🎨 **Convenient Style Control**
91
+ Support dynamic acquisition and modification of component text content, foreground color and background color, simplify style operation code, and avoid repeated writing of style sheets.
92
+ - πŸ”— **Dynamic Widget Binding**
93
+ Realize dynamic creation and binding of widgets, unified management of component stack, flexible addition of multiple UI elements at runtime.
94
+ - πŸ”„ **Cross-Platform Stable Operation**
95
+ Follow PySide6 cross-platform design ideas, no platform-specific code, all core functions run consistently on Windows / Linux / macOS.
96
+ - πŸ“¦ **Module Decoupling & Flexible Quotation**
97
+ Window management and basic widget modules are completely decoupled, supporting independent introduction and separate use, matching different project development demands flexibly.
98
+ - 🧹 **Clear Structure & Easy Expansion**
99
+ Hierarchical code design, clear function classification, reserved expansion interfaces, convenient for users to expand custom widgets and extend personalized functions on the existing framework.
100
+ - 🎯 **Lightweight & Low Overhead**
101
+ Focus on practical basic GUI capabilities, discard redundant complicated functions, occupy few system resources, and adapt to small tools, desktop gadgets and other lightweight projects.
102
+
103
+ ## Suitable Scenarios
104
+ - Personal daily PySide6 learning practice and small GUI tool development
105
+ - Rapid development of lightweight desktop gadgets and console auxiliary clients
106
+ - Simple desktop application construction that requires unified management of basic UI components
107
+ - Beginner's PySide6 programming learning and code standardization training
108
+ - Unify basic GUI underlying code of small and medium-sized projects to reduce repeated development
109
+ - Secondary development and function expansion based on basic encapsulated widgets
110
+ - Development of simple upper computer auxiliary interface and small interactive program
111
+ - Finishing and sorting of daily accumulated PySide6 basic GUI code snippets
112
+
113
+ ## Getting Started
114
+ [**Explore the docs >>>**](docs)
115
+
116
+ [**Explore the examples >>>**](example)
117
+
118
+ Here is an example to run.
119
+
120
+ At first, please clone the repository on your local computer:
121
+ ```bash
122
+ git clone https://github.com/FishgameStudio/oh-my-gui.git
123
+ ```
124
+
125
+ *Please keep the copyright comments in the source ode file while using.*
126
+ *if you modified our source code, please insert these lines into your code:*
127
+ ```python
128
+ # Modified by [Your Name] [Modified Date]
129
+ # Changes: [Modified Content]
130
+ ```
131
+ To use the APIs of this project, please install them down:
132
+ ```bash
133
+ pip install .
134
+ ```
135
+ And you can use the APIs:
136
+ ```python
137
+ import ohmygui.core as core
138
+ import ohmygui.widget as widget
139
+ import ohmygui.layout as layout
140
+
141
+ app = core.App()
142
+ window = core.Window("Horizontal Layout Example", (400, 200))
143
+ layout = layout.HorizentalLayout()
144
+
145
+ layout.add_widget(widget.Text("Hello"))
146
+ layout.add_spacing(20)
147
+ layout.add_widget(widget.Text("World"))
148
+ layout.add_stretch()
149
+ layout.add_widget(widget.Text("!"))
150
+ window.set_layout(layout)
151
+ window.show()
152
+ app.run()
153
+ ```
154
+
155
+
156
+ ## NOTICE
157
+ This project uses **`PySide6`** as the GUI core dependency. Please ensure **`PySide6` is installed** in your Python environment before running or building the project.
158
+
159
+ ## Roadmap
160
+ - [x] **v0.1.0**: Core framework, basic widget, 1 exmaple
161
+ - [x] **v0.2.0**: Basic layout, 3~5 examples, dialog module
162
+ - [x] **v0.3.0**: Basic style control, QML support
163
+ - [x] **v0.4.0**: Optimize layout, complex widgets
164
+ - [x] **v0.5.0**: Fix most bugs, optimize performence, improve docs
165
+ - [ ] **v0.9.0**\[RC Version\]: freeze API
166
+ - [ ] **v1.0.0**\[Official Stable Version\]: launch on PyPI
167
+
168
+ See the [open issues](https://github.com/FishgameStudio/oh-my-gui/issues) for a full list of proposed features (and known issues).
169
+
170
+ ## Contributing
171
+
172
+ Contributions are what make the open source community such an amazing place **to learn, inspire, and create**. Any contributions you make are **greatly appreciated**.
173
+
174
+ If you have a suggestion that would make this better, please **fork the repo** and **create a pull request**. You can also simply open an issue with the tag **"enhancement"**.
175
+ Don't forget to give the project a star! Thanks again!
176
+
177
+ 1. Fork the Project
178
+ 2. Create your Feature Branch (`git checkout -b feat/AmazingFeature`)
179
+ 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
180
+ 4. Push to the Branch (`git push origin feat/AmazingFeature`)
181
+ 5. Open a Pull Request
182
+
183
+ ### Top contributors:
184
+
185
+ <a href="https://github.com/FishgameStudio/oh-my-gui/graphs/contributors">
186
+ <img src="https://contrib.rocks/image?repo=FishgameStudio/oh-my-gui" alt="contrib.rocks image" />
187
+ </a>
188
+
189
+ ## License
190
+
191
+ Distributed under the MIT License. See [LICENSE](LICENSE) for more information.
192
+
193
+
194
+ ## Contact
195
+
196
+ Nicola Grey - [popxhxh@outlook.com](mailto:popxhxh@outlook.com)
197
+
198
+ Project Link: [https://github.com/FishgameStudio/oh-my-gui](https://github.com/FishgameStudio/oh-my-gui)
199
+
200
+
201
+ ## Acknowledgments
202
+
203
+ * [Best-README-Template](https://github.com/othneildrew/Best-README-Template)
204
+ * [PySide6](https://github.com/pyside/pyside-setup)
205
+
206
+
207
+ ## Conclusion
208
+ Hope this lightweight UtilitiesLibrary can assist you in daily C++ development, simplify repetitive basic logic writing, and speed up your project construction efficiency.
209
+
210
+ Every star, fork and sincere feedback means a lot to me. You are warmly welcome to submit issues for bugs feedback and function suggestions, or send pull requests to participate in code optimization and function iteration, so as to polish and improve this utility library together.
211
+
212
+ If you find this project practical and helpful, don’t forget to hit **Star** and **Fork**. All valuable opinions and ideas are **sincerely welcomed**. Thank you very much for your support!