RinUI 0.0.11__py3-none-any.whl → 0.1.1__py3-none-any.whl

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 (115) hide show
  1. RinUI/__init__.py +4 -4
  2. RinUI/assets/fonts/FluentSystemIcons-Index.js +5255 -5255
  3. RinUI/assets/img/default_app_icon.png +0 -0
  4. RinUI/components/Base.qml +78 -78
  5. RinUI/components/BasicInput/Button.qml +146 -147
  6. RinUI/components/BasicInput/CheckBox.qml +98 -98
  7. RinUI/components/BasicInput/ComboBox.qml +159 -159
  8. RinUI/components/BasicInput/DropDownButton.qml +20 -20
  9. RinUI/components/BasicInput/Hyperlink.qml +17 -17
  10. RinUI/components/BasicInput/PillButton.qml +10 -10
  11. RinUI/components/BasicInput/RadioButton.qml +94 -94
  12. RinUI/components/BasicInput/RoundButton.qml +26 -26
  13. RinUI/components/BasicInput/Slider.qml +212 -212
  14. RinUI/components/BasicInput/Switch.qml +101 -101
  15. RinUI/components/BasicInput/ToggleButton.qml +10 -10
  16. RinUI/components/BasicInput/ToolButton.qml +30 -30
  17. RinUI/components/ContextMenu.qml +183 -183
  18. RinUI/components/DateAndTime/DatePicker.qml +142 -140
  19. RinUI/components/DateAndTime/PickerView.qml +223 -223
  20. RinUI/components/DateAndTime/TimePicker.qml +114 -114
  21. RinUI/components/DialogsAndFlyouts/Dialog.qml +106 -106
  22. RinUI/components/DialogsAndFlyouts/DialogButtonBox.qml +47 -47
  23. RinUI/components/DialogsAndFlyouts/Flyout.qml +87 -144
  24. RinUI/components/DialogsAndFlyouts/Popup.qml +110 -106
  25. RinUI/components/FocusIndicator.qml +33 -33
  26. RinUI/components/IconWidget.qml +52 -52
  27. RinUI/components/Indicator.qml +89 -89
  28. RinUI/components/Layout/Expander.qml +159 -159
  29. RinUI/components/Layout/SettingExpander.qml +66 -66
  30. RinUI/components/Layout/SettingItem.qml +70 -70
  31. RinUI/components/ListAndCollections/Clip.qml +21 -21
  32. RinUI/components/ListAndCollections/Frame.qml +43 -43
  33. RinUI/components/ListAndCollections/ListView.qml +104 -104
  34. RinUI/components/ListAndCollections/ListViewDelegate.qml +82 -82
  35. RinUI/components/ListAndCollections/SettingCard.qml +72 -72
  36. RinUI/components/ListAndCollections/TableView.qml +81 -81
  37. RinUI/components/ListAndCollections/TableViewDelegate.qml +88 -88
  38. RinUI/components/Media/Avatar.qml +83 -0
  39. RinUI/components/MenusAndToolbars/Menu.qml +150 -150
  40. RinUI/components/MenusAndToolbars/MenuBar.qml +42 -42
  41. RinUI/components/MenusAndToolbars/MenuItem.qml +131 -131
  42. RinUI/components/MenusAndToolbars/MenuItemGroup.qml +43 -43
  43. RinUI/components/MenusAndToolbars/MenuSeparator.qml +13 -13
  44. RinUI/components/MenusAndToolbars/TextInputMenu.qml +37 -37
  45. RinUI/components/MenusAndToolbars/ToolSeparator.qml +16 -16
  46. RinUI/components/Navigation/ErrorPage.qml +48 -48
  47. RinUI/components/Navigation/NavigationBar.qml +179 -179
  48. RinUI/components/Navigation/NavigationItem.qml +193 -193
  49. RinUI/components/Navigation/NavigationSubItem.qml +103 -103
  50. RinUI/components/Navigation/NavigationView.qml +228 -227
  51. RinUI/components/Navigation/Segmented.qml +17 -0
  52. RinUI/components/Navigation/SegmentedItem.qml +108 -0
  53. RinUI/components/Navigation/SelectorBar.qml +12 -57
  54. RinUI/components/Navigation/SelectorBarItem.qml +89 -0
  55. RinUI/components/ScrollBar.qml +204 -204
  56. RinUI/components/ScrollView.qml +12 -12
  57. RinUI/components/Shadow.qml +47 -47
  58. RinUI/components/StatusAndInfo/InfoBadge.qml +77 -77
  59. RinUI/components/StatusAndInfo/InfoBar.qml +256 -251
  60. RinUI/components/StatusAndInfo/ProgressBar.qml +126 -126
  61. RinUI/components/StatusAndInfo/ProgressRing.qml +149 -0
  62. RinUI/components/StatusAndInfo/Toast.qml +236 -236
  63. RinUI/components/StatusAndInfo/ToolTip.qml +93 -93
  64. RinUI/components/Text/SpinBox.qml +150 -133
  65. RinUI/components/Text/Text.qml +44 -44
  66. RinUI/components/Text/TextArea.qml +117 -117
  67. RinUI/components/Text/TextField.qml +113 -113
  68. RinUI/components/Text/TextInput.qml +47 -47
  69. RinUI/components/qmldir +80 -77
  70. RinUI/core/__init__.py +4 -4
  71. RinUI/core/config.py +129 -129
  72. RinUI/core/launcher.py +129 -129
  73. RinUI/core/theme.py +339 -339
  74. RinUI/core/translator.py +25 -25
  75. RinUI/hooks/__init__.py +3 -3
  76. RinUI/hooks/hook-RinUI.py +3 -3
  77. RinUI/qmldir +108 -97
  78. RinUI/themes/Appearance.qml +36 -0
  79. RinUI/themes/Colors.qml +36 -0
  80. RinUI/themes/dark.qml +145 -136
  81. RinUI/themes/light.qml +145 -136
  82. RinUI/themes/qmldir +9 -6
  83. RinUI/themes/theme.qml +151 -149
  84. RinUI/themes/utils.qml +37 -37
  85. RinUI/utils/Animation.qml +12 -12
  86. RinUI/utils/FloatLayer.qml +132 -123
  87. RinUI/utils/FontIconLoader.qml +13 -13
  88. RinUI/utils/Position.qml +19 -19
  89. RinUI/utils/Severity.qml +13 -13
  90. RinUI/utils/Typography.qml +17 -17
  91. RinUI/utils/qmldir +4 -4
  92. RinUI/windows/CtrlBtn.qml +118 -118
  93. RinUI/windows/FluentPage.qml +92 -92
  94. RinUI/windows/FluentWindow.qml +31 -30
  95. RinUI/windows/FluentWindowBase.qml +158 -158
  96. RinUI/windows/TitleBar.qml +135 -135
  97. RinUI/windows/qmldir +7 -7
  98. RinUI/windows/window/ApplicationWindow.qml +8 -8
  99. RinUI/windows/window/Window.qml +118 -118
  100. {rinui-0.0.11.data → rinui-0.1.1.data}/data/LICENSE +21 -21
  101. {rinui-0.0.11.data → rinui-0.1.1.data}/data/README.md +100 -97
  102. {rinui-0.0.11.dist-info → rinui-0.1.1.dist-info}/METADATA +116 -112
  103. rinui-0.1.1.dist-info/RECORD +112 -0
  104. {rinui-0.0.11.dist-info → rinui-0.1.1.dist-info}/WHEEL +1 -1
  105. {rinui-0.0.11.dist-info → rinui-0.1.1.dist-info/licenses}/LICENSE +21 -21
  106. RinUI/__pycache__/__init__.cpython-38.pyc +0 -0
  107. RinUI/config/rin_ui.json +0 -8
  108. RinUI/core/__pycache__/__init__.cpython-38.pyc +0 -0
  109. RinUI/core/__pycache__/config.cpython-38.pyc +0 -0
  110. RinUI/core/__pycache__/launcher.cpython-38.pyc +0 -0
  111. RinUI/core/__pycache__/theme.cpython-38.pyc +0 -0
  112. RinUI/core/__pycache__/translator.cpython-38.pyc +0 -0
  113. rinui-0.0.11.dist-info/RECORD +0 -112
  114. {rinui-0.0.11.dist-info → rinui-0.1.1.dist-info}/entry_points.txt +0 -0
  115. {rinui-0.0.11.dist-info → rinui-0.1.1.dist-info}/top_level.txt +0 -0
@@ -1,119 +1,119 @@
1
- import QtQuick 2.15
2
- import QtQuick.Controls 2.15
3
- import QtQuick.Layouts 2.15
4
- import "../../windows"
5
- import "../../themes"
6
- import "../../utils"
7
-
8
- Window {
9
- id: baseWindow
10
- flags: frameless ? Qt.FramelessWindowHint | Qt.Window | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint | Qt.WindowCloseButtonHint
11
- : Qt.Window
12
-
13
- color: frameless ? "transparent" : Theme.currentTheme.colors.backgroundColor
14
- property bool frameless: false
15
- default property alias content: baseWindow.data
16
- property int titleBarHeight: Theme.currentTheme.appearance.dialogTitleBarHeight
17
-
18
- // 布局
19
- ColumnLayout {
20
- anchors.fill: parent
21
- anchors.bottomMargin: Utils.windowDragArea
22
- anchors.leftMargin: Utils.windowDragArea
23
- anchors.rightMargin: Utils.windowDragArea
24
- spacing: 0
25
-
26
- // 顶部边距
27
- Item {
28
- Layout.preferredHeight: titleBar.height
29
- Layout.fillWidth: true
30
- visible: frameless
31
- }
32
-
33
- // 主体内容区域
34
- Item {
35
- id: contentArea
36
- Layout.fillWidth: true
37
- Layout.fillHeight: true
38
- }
39
- }
40
-
41
- FloatLayer {
42
- id: floatLayer
43
- anchors.topMargin: titleBarHeight
44
- z: 998
45
- }
46
-
47
- // 标题栏
48
- TitleBar {
49
- id: titleBar
50
- window: baseWindow
51
- icon: baseWindow.icon
52
- title: baseWindow.title
53
- Layout.fillWidth: true
54
- height: baseWindow.titleBarHeight
55
- visible: frameless
56
- }
57
-
58
- Rectangle {
59
- id: background
60
- anchors.fill: parent
61
- color: Utils.backdropEnabled ? "transparent" : Theme.currentTheme.colors.backgroundColor
62
- border.color: Theme.currentTheme.colors.windowBorderColor
63
- z: -1
64
- clip: true
65
- visible: frameless
66
-
67
- // Shadow {}
68
-
69
- Behavior on color {
70
- ColorAnimation {
71
- duration: Utils.backdropEnabled ? 0 : 150
72
- }
73
- }
74
- }
75
-
76
- Behavior on color {
77
- ColorAnimation {
78
- duration: Utils.appearanceSpeed
79
- }
80
- }
81
-
82
- //改变鼠标形状
83
- MouseArea {
84
- anchors.fill: parent
85
- hoverEnabled: baseWindow.visibility !== Window.Maximized
86
- z: -1
87
- cursorShape: {
88
- if (!frameless) {
89
- return
90
- }
91
- const p = Qt.point(mouseX, mouseY)
92
- const b = Utils.windowDragArea
93
- if (p.x < b && p.y < b) return Qt.SizeFDiagCursor
94
- if (p.x >= width - b && p.y >= height - b) return Qt.SizeFDiagCursor
95
- if (p.x >= width - b && p.y < b) return Qt.SizeBDiagCursor
96
- if (p.x < b && p.y >= height - b) return Qt.SizeBDiagCursor
97
- if (p.x < b || p.x >= width - b) return Qt.SizeHorCursor
98
- if (p.y < b || p.y >= height - b) return Qt.SizeVerCursor
99
- }
100
- acceptedButtons: Qt.NoButton
101
- }
102
-
103
- DragHandler {
104
- id: resizeHandler
105
- enabled: false
106
- grabPermissions: TapHandler.TakeOverForbidden
107
- target: null
108
- onActiveChanged: if (active && baseWindow.visibility !== Window.Maximized) {
109
- const p = resizeHandler.centroid.position
110
- const b = Utils.windowDragArea + 10
111
- let e = 0;
112
- if (p.x < b) e |= Qt.LeftEdge
113
- if (p.x >= width - b) e |= Qt.RightEdge
114
- if (p.y < b) e |= Qt.TopEdge
115
- if (p.y >= height - b) e |= Qt.BottomEdge
116
- baseWindow.startSystemResize(e)
117
- }
118
- }
1
+ import QtQuick 2.15
2
+ import QtQuick.Controls 2.15
3
+ import QtQuick.Layouts 2.15
4
+ import "../../windows"
5
+ import "../../themes"
6
+ import "../../utils"
7
+
8
+ Window {
9
+ id: baseWindow
10
+ flags: frameless ? Qt.FramelessWindowHint | Qt.Window | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint | Qt.WindowCloseButtonHint
11
+ : Qt.Window
12
+
13
+ color: frameless ? "transparent" : Theme.currentTheme.colors.backgroundColor
14
+ property bool frameless: false
15
+ default property alias content: baseWindow.data
16
+ property int titleBarHeight: Theme.currentTheme.appearance.dialogTitleBarHeight
17
+
18
+ // 布局
19
+ ColumnLayout {
20
+ anchors.fill: parent
21
+ anchors.bottomMargin: Utils.windowDragArea
22
+ anchors.leftMargin: Utils.windowDragArea
23
+ anchors.rightMargin: Utils.windowDragArea
24
+ spacing: 0
25
+
26
+ // 顶部边距
27
+ Item {
28
+ Layout.preferredHeight: titleBar.height
29
+ Layout.fillWidth: true
30
+ visible: frameless
31
+ }
32
+
33
+ // 主体内容区域
34
+ Item {
35
+ id: contentArea
36
+ Layout.fillWidth: true
37
+ Layout.fillHeight: true
38
+ }
39
+ }
40
+
41
+ FloatLayer {
42
+ id: floatLayer
43
+ anchors.topMargin: titleBarHeight
44
+ z: 998
45
+ }
46
+
47
+ // 标题栏
48
+ TitleBar {
49
+ id: titleBar
50
+ window: baseWindow
51
+ icon: baseWindow.icon
52
+ title: baseWindow.title
53
+ Layout.fillWidth: true
54
+ height: baseWindow.titleBarHeight
55
+ visible: frameless
56
+ }
57
+
58
+ Rectangle {
59
+ id: background
60
+ anchors.fill: parent
61
+ color: Utils.backdropEnabled ? "transparent" : Theme.currentTheme.colors.backgroundColor
62
+ border.color: Theme.currentTheme.colors.windowBorderColor
63
+ z: -1
64
+ clip: true
65
+ visible: frameless
66
+
67
+ // Shadow {}
68
+
69
+ Behavior on color {
70
+ ColorAnimation {
71
+ duration: Utils.backdropEnabled ? 0 : 150
72
+ }
73
+ }
74
+ }
75
+
76
+ Behavior on color {
77
+ ColorAnimation {
78
+ duration: Utils.appearanceSpeed
79
+ }
80
+ }
81
+
82
+ //改变鼠标形状
83
+ MouseArea {
84
+ anchors.fill: parent
85
+ hoverEnabled: baseWindow.visibility !== Window.Maximized
86
+ z: -1
87
+ cursorShape: {
88
+ if (!frameless) {
89
+ return
90
+ }
91
+ const p = Qt.point(mouseX, mouseY)
92
+ const b = Utils.windowDragArea
93
+ if (p.x < b && p.y < b) return Qt.SizeFDiagCursor
94
+ if (p.x >= width - b && p.y >= height - b) return Qt.SizeFDiagCursor
95
+ if (p.x >= width - b && p.y < b) return Qt.SizeBDiagCursor
96
+ if (p.x < b && p.y >= height - b) return Qt.SizeBDiagCursor
97
+ if (p.x < b || p.x >= width - b) return Qt.SizeHorCursor
98
+ if (p.y < b || p.y >= height - b) return Qt.SizeVerCursor
99
+ }
100
+ acceptedButtons: Qt.NoButton
101
+ }
102
+
103
+ DragHandler {
104
+ id: resizeHandler
105
+ enabled: false
106
+ grabPermissions: TapHandler.TakeOverForbidden
107
+ target: null
108
+ onActiveChanged: if (active && baseWindow.visibility !== Window.Maximized) {
109
+ const p = resizeHandler.centroid.position
110
+ const b = Utils.windowDragArea + 10
111
+ let e = 0;
112
+ if (p.x < b) e |= Qt.LeftEdge
113
+ if (p.x >= width - b) e |= Qt.RightEdge
114
+ if (p.y < b) e |= Qt.TopEdge
115
+ if (p.y >= height - b) e |= Qt.BottomEdge
116
+ baseWindow.startSystemResize(e)
117
+ }
118
+ }
119
119
  }
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 RinLit
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.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 RinLit
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.
@@ -1,97 +1,100 @@
1
- <div align="center">
2
- <h1>RinUI</h1>
3
- <p>A Fluent Design-like UI library for Qt Quick (QML)</p>
4
-
5
- **English** | [中文](./docs/README_zhCN.MD)
6
-
7
- </div>
8
-
9
- > [!TIP]
10
- > This project is still in development and not ready for production use! (This project has even not a logo yet)
11
- >
12
- > Of course, you are welcome to contribute to this project.
13
-
14
- ## 📄 Introduction
15
-
16
- RinUI is a UI library similar to Fluent Design for Qt Quick (QML), RinUI will provide high-quality components and practical functions.
17
- With simple configuration, you can quickly develop elegant UI interfaces in the Fluent style.
18
-
19
- ### Features
20
- * Elegant Fluent Design controls (WIP)
21
- * Dark and light mode, automatic switching
22
- * Compatible with original QML control names
23
- * i18n Internationalization
24
- * Multi-programming language support (WIP)
25
- * Theme system (WIP)
26
- * Development documentation, [preview](https://ui.rinlit.cn/) now. (WIP)
27
-
28
- ### Screenshots
29
- ![Screenshot 1](/docs/img/shot_1.png)
30
-
31
- <details style="text-align: center">
32
- <summary>More screenshots...</summary>
33
-
34
- ![img.png](/docs/img/img.png)
35
- ![img_1.png](/docs/img/img_1.png)
36
- ![img_2.png](/docs/img/img_2.png)
37
- ![img_3.png](/docs/img/img_3.png)
38
- </details>
39
-
40
- ## 🪄 Usage
41
-
42
- You can install RinUI via pip:
43
- ```bash
44
- pip install RinUI
45
- ```
46
-
47
- Import RinUI in your QML file:
48
- ```qmllang
49
- import RinUI
50
- ```
51
- Then you can run the QML file in your project.
52
- ```python
53
- import sys
54
- from RinUI import *
55
- from PySide6.QtWidgets import QApplication
56
-
57
- if __name__ == '__main__':
58
- app = QApplication(sys.argv)
59
- your_app = RinUIWindow("/path/to/your/file.qml")
60
- sys.exit(app.exec_())
61
- ```
62
-
63
- You also can view the demo in the source code, like this:
64
- ```bash
65
- cd examples
66
- python gallery.py
67
- ```
68
-
69
- You also can move the RinUI folder to anywhere in your project's directory.
70
-
71
- > [!NOTE]
72
- > The documentation is still in progress!!
73
- > You can view the source code to learn more about the components and themes at the moment.
74
-
75
- Now you can learn more about RinUI components and themes in [the online documentation](https://ui.rinlit.cn/).
76
-
77
- ## 🙌 Acknowledgements
78
- ### Resources
79
- - [PySide6 & Qt Quick](https://www.qt.io/)
80
- - [Fluent Design System](https://fluent2.microsoft.design/)
81
- - [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons/)
82
- - [WinUI 3 Gallery](https://github.com/microsoft/WinUI-Gallery)
83
-
84
- ### Contributors
85
- Contributions are welcome! Please read the [contribution guidelines](./CONTRIBUTING.md) before submitting a pull request.
86
-
87
- Thanks to the great people who contributed to this project.
88
- [![Contributors](http://contrib.nn.ci/api?repo=rinlit-233-shiroko/Rin-UI)](https://github.com/RinLit-233-shiroko/Rin-UI/graphs/contributors)
89
-
90
- ## 📜 License
91
- This project is licensed under the **MIT** License, you can learn more about it in the [license file](./LICENSE).
92
-
93
- Copyright © 2025 RinLit
94
-
95
- ##
96
-
97
- This is an experimental project by Rin as a newcomer. Welcome to suggest and contribute to this project. ❤️
1
+ <div align="center">
2
+ <img src="docs/img/logo.png" alt="RinUI Logo" width="18%">
3
+ <h1>RinUI</h1>
4
+ <p>A Fluent Design-like UI library for Qt Quick (QML)</p>
5
+
6
+ **English** | [中文](./docs/README_zhCN.MD)
7
+
8
+ </div>
9
+
10
+ > [!TIP]
11
+ > This project is still in development and not ready for production use!
12
+ >
13
+ > Of course, you are welcome to contribute to this project.
14
+
15
+ ## 📄 Introduction
16
+
17
+ RinUI is a UI library similar to Fluent Design for Qt Quick (QML), RinUI will provide high-quality components and practical functions.
18
+ With simple configuration, you can quickly develop elegant UI interfaces in the Fluent style.
19
+
20
+ ### Features
21
+ * Elegant Fluent Design controls (WIP)
22
+ * Dark and light mode, automatic switching
23
+ * Compatible with original QML control names
24
+ * i18n Internationalization
25
+ * Multi-programming language support (WIP)
26
+ * Theme system (WIP)
27
+ * Development documentation, [preview](https://ui.rinlit.cn/) now. (WIP)
28
+
29
+ ### Screenshots
30
+ ![Screenshot 1](/docs/img/shot_1.png)
31
+
32
+ <details style="text-align: center">
33
+ <summary>More screenshots...</summary>
34
+
35
+ ![img.png](/docs/img/img.png)
36
+ ![img_1.png](/docs/img/img_1.png)
37
+ ![img_2.png](/docs/img/img_2.png)
38
+ ![img_3.png](/docs/img/img_3.png)
39
+ </details>
40
+
41
+ > The image in the banner comes from Pixiv, PID: [125975786](https://www.pixiv.net/artworks/125975786)
42
+
43
+ ## 🪄 Usage
44
+
45
+ You can install RinUI via pip:
46
+ ```bash
47
+ pip install RinUI
48
+ ```
49
+
50
+ Import RinUI in your QML file:
51
+ ```qmllang
52
+ import RinUI
53
+ ```
54
+ Then you can run the QML file in your project.
55
+ ```python
56
+ import sys
57
+ from RinUI import *
58
+ from PySide6.QtWidgets import QApplication
59
+
60
+ if __name__ == '__main__':
61
+ app = QApplication(sys.argv)
62
+ your_app = RinUIWindow("/path/to/your/file.qml")
63
+ sys.exit(app.exec_())
64
+ ```
65
+
66
+ You also can view the demo in the source code, like this:
67
+ ```bash
68
+ cd examples
69
+ python gallery.py
70
+ ```
71
+
72
+ You also can move the RinUI folder to anywhere in your project's directory.
73
+
74
+ > [!NOTE]
75
+ > The documentation is still in progress!!
76
+ > You can view the source code to learn more about the components and themes at the moment.
77
+
78
+ Now you can learn more about RinUI components and themes in [the online documentation](https://ui.rinlit.cn/).
79
+
80
+ ## 🙌 Acknowledgements
81
+ ### Resources
82
+ - [PySide6 & Qt Quick](https://www.qt.io/)
83
+ - [Fluent Design System](https://fluent2.microsoft.design/)
84
+ - [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons/)
85
+ - [WinUI 3 Gallery](https://github.com/microsoft/WinUI-Gallery)
86
+
87
+ ### Contributors
88
+ Contributions are welcome! Please read the [contribution guidelines](./CONTRIBUTING.md) before submitting a pull request.
89
+
90
+ Thanks to the great people who contributed to this project.
91
+ [![Contributors](http://contrib.nn.ci/api?repo=rinlit-233-shiroko/Rin-UI)](https://github.com/RinLit-233-shiroko/Rin-UI/graphs/contributors)
92
+
93
+ ## 📜 License
94
+ This project is licensed under the **MIT** License, you can learn more about it in the [license file](./LICENSE).
95
+
96
+ Copyright © 2025 RinLit
97
+
98
+ ##
99
+
100
+ This is an experimental project by Rin as a newcomer. Welcome to suggest and contribute to this project. ❤️