Skip to content

Commit 30adf57

Browse files
author
peter
committed
Update to 3.9.8.
1 parent 95a1eed commit 30adf57

File tree

8 files changed

+190
-9
lines changed

8 files changed

+190
-9
lines changed

README_MORE.assets/ui_carousel.png

104 KB
Loading
30.4 KB
Loading
15.1 KB
Loading
11.4 KB
Loading
11 KB
Loading
7.3 KB
Loading
5.13 KB
Loading

README_MORE.md

Lines changed: 190 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,37 +1302,218 @@ ui.run(native=True)
13021302

13031303
#### 3.9.6 ui.carousel
13041304

1305+
‌‌轮播图是一种常见的网页设计元素,主要用于提供网页内容的快速展示和导航。‌ 它通过切换多个图片或内容,吸引用户的注意力,提高页面的视觉吸引力。轮播图支持自定义轮播图片、轮播动画效果等,能够在可视化应用中展示多张图片轮流播放的效果。
13051306

1307+
在NiceGUI中,ui.carousel就是可以实现轮播图效果的控件,不过它的英文是carousel,翻译过来的话是旋转木马,听起来不太像控件,这里就用轮播图代替。
13061308

1307-
ui.expansion
1309+
<img src="README_MORE.assets/ui_carousel_sketch.png" alt="ui_carousel_sketch" style="zoom:67%;" />
13081310

1311+
NiceGUI的轮播图控件,本质上是一种容器,轮播图会依次展示每个子控件,放在其中的子控件就是像一页一页的幻灯片。一般来说,轮播图子控件应该是ui.carousel_slide,实际上用其他控件也可以。
13091312

1313+
ui.carousel有五个参数:
13101314

1311-
ui.pagination
1315+
`value`参数,字符串类型或者ui.carousel_slide,表示轮播图初始展示哪一个子控件,默认为`None`,表示展示第一个。
13121316

1317+
`on_value_change`参数,可调用类型,表示轮播图当前展示的子控件变化时,执行什么操作。
13131318

1319+
`animated`参数,布尔类型,表示是否开启切换动画。
13141320

1315-
ui.stepper
1321+
`arrows`参数,布尔类型,表示是否显示手动切换上、下一个子控件的箭头。
13161322

1323+
`navigation`参数,布尔类型,表示是否显示下面直接切换哪一个子控件的圆点。
13171324

1325+
`previous`方法,切换上一个子控件。
13181326

1319-
ui.timeline
1327+
`next`方法,切换下一个子控件。
1328+
1329+
ui.carousel_slide只有一个字符串参数`name`,也就是上面ui.carousel中`value`用到的指定当前页的值。默认没有指定的话,这个值是自动生成的——'slide_1'这种名字,下划线后的数字代表当前控件在所有子控件中的排序。
1330+
1331+
```python3
1332+
from nicegui import ui
1333+
1334+
with ui.carousel(animated=True, arrows=True, navigation=True, on_value_change=lambda e: ui.notify(e.value))\
1335+
.props('autoplay=5000 infinite') as carousel:
1336+
with ui.carousel_slide().classes('p-0'):
1337+
ui.interactive_image(
1338+
'https://picsum.photos/id/30/270/180').classes('w-full h-full')
1339+
with ui.carousel_slide().classes('p-0'):
1340+
ui.interactive_image(
1341+
'https://picsum.photos/id/31/270/180').classes('w-full h-full')
1342+
with ui.carousel_slide().classes('p-0'):
1343+
ui.interactive_image(
1344+
'https://picsum.photos/id/32/270/180').classes('w-full h-full')
1345+
with ui.row():
1346+
ui.button(icon='arrow_left',on_click=carousel.previous)
1347+
ui.button(icon='arrow_right',on_click=carousel.next)
1348+
1349+
ui.run(native=True)
1350+
```
1351+
1352+
<img src="README_MORE.assets/ui_carousel.png" alt="ui_carousel" style="zoom:80%;" />
1353+
1354+
#### 3.9.7 ui.expansion
1355+
1356+
在其他UI框架中可能叫做Accordion或者手风琴,这里也称之为手风琴控件,而不是直译其为扩大。
1357+
1358+
‌手风琴控件是一个用来展示多个面板的控件,这些面板同时只能展开一项(也可以一项都不展开),和选项卡控件有异曲同工之妙。‌手风琴控件允许在一个紧凑的空间中显示许多链接,通过单击或点击来展开和折叠,使得用户可以在一个可视化的界面中快速访问不同的信息或功能。这种控件通常包括一个或多个可折叠的面板,每个面板可以包含文本、图像或其他内容,用户可以通过点击面板的标题来展开或折叠对应的内容。手风琴控件的设计旨在提供一个直观且用户友好的界面,使用户能够轻松地在不同部分之间切换,同时保持界面的整洁和有序。
1359+
1360+
先看代码和效果图:
1361+
1362+
```python3
1363+
from nicegui import ui
1364+
1365+
with ui.expansion(
1366+
text="Expand!",
1367+
caption="Expand me",
1368+
icon="work",
1369+
group=None,
1370+
value=False,
1371+
on_value_change=lambda e:ui.notify(e.value),
1372+
).classes("w-full"):
1373+
ui.label("inside the expansion")
1374+
1375+
ui.run(native=True)
1376+
```
1377+
1378+
<img src="README_MORE.assets/ui_expansion.png" alt="ui_expansion" style="zoom: 67%;" />
1379+
1380+
ui.expansion有六个参数:
1381+
1382+
`text`参数,字符串类型,表示手风琴控件的文本内容。
1383+
1384+
`caption`参数,字符串类型,表示手风琴控件的说明性文本内容(也可以称之为副标题或者标签文本,比文本内容小一点)。
1385+
1386+
`icon`参数,字符串类型,表示手风琴控件的图标。
1387+
1388+
`group`参数,字符串类型,表示手风琴控件的分组,默认为`None`。其实,单个ui.expansion没法组成手风琴控件,需要多个配合。在没有指定此参数的情况下,每个ui.expansion都是独立打开、关闭的,只有在指定相同的此参数之后,各个ui.expansion的开闭才会关联,每组ui.expansion中只允许一个ui.expansion开启,点开其他ui.expansion会让已经打开的ui.expansion关闭。
1389+
1390+
`value`参数,布尔类型,表示ui.expansion的开关状态,默认为`False`
1391+
1392+
`on_value_change`参数,可调用类型,表示手风琴控件的值变化时执行什么操作。
1393+
1394+
`open`方法,调用此方法会打开手风琴控件。
1395+
1396+
`close`方法,调用此方法会关闭手风琴控件。
1397+
1398+
如果想用图片代替手风琴控件的图标,可以这样操作:
1399+
1400+
```python3
1401+
from nicegui import ui
1402+
1403+
with ui.expansion() as expansion:
1404+
with expansion.add_slot('header'):
1405+
with ui.row().classes('items-center'):
1406+
ui.image('https://nicegui.io/logo.png').classes('w-16')
1407+
ui.label('LOGO')
1408+
ui.label('What a nice GUI!')
1409+
1410+
ui.run(native=True)
1411+
```
1412+
1413+
![ui_expansion2](README_MORE.assets/ui_expansion2.png)
1414+
1415+
前面提到的`group`参数,用法也很简单:
1416+
1417+
```python3
1418+
from nicegui import ui
1419+
1420+
with ui.expansion(text='Expand One!', group='group'):
1421+
ui.label('inside expansion one')
1422+
with ui.expansion(text='Expand Two!', group='group'):
1423+
ui.label('inside expansion two')
1424+
with ui.expansion(text='Expand Three!', group='group'):
1425+
ui.label('inside expansion three')
1426+
1427+
ui.run(native=True)
1428+
```
1429+
1430+
![ui_expansion3](README_MORE.assets/ui_expansion3.png)
1431+
1432+
#### 3.9.8 ui.pagination
1433+
1434+
常在网页中看到多页内容的底部有标着页码的分页控件,点击后一页或者对应页码可以直接跳转。在NiceGUI,实现此功能的是ui.pagination。
1435+
1436+
```python3
1437+
from nicegui import ui
1438+
1439+
p = {"value": 0}
1440+
ui.label().bind_text_from(p, "value", lambda v: f"Page {v}")
1441+
ui.pagination(
1442+
min=1,
1443+
max=5,
1444+
direction_links=False,
1445+
value=1,
1446+
on_change=lambda e: ui.notify(e.value)
1447+
).bind_value_to(p)
1448+
1449+
1450+
ui.run(native=True)
1451+
```
1452+
1453+
![ui_pagination](README_MORE.assets/ui_pagination.png)
1454+
1455+
ui.pagination有五个参数:
1456+
1457+
`min`参数,整数类型,分页控件的页码最小值。
1458+
1459+
`max`参数,整数类型,分页控件的页码最小值。
1460+
1461+
`direction_links`参数,布尔类型,是否显示前一页、后一页的链接。
1462+
1463+
`value`参数,整数类型,分页控件的页码初始值。如果没有指定初始值,初始值是最小值。
1464+
1465+
`on_change`参数,可调用类型,表示分页控件的值变化时执行什么操作。
1466+
1467+
分页控件的更多样式设计可以参考[Quasar官网](https://quasar.dev/vue-components/pagination#qpagination-api)
1468+
1469+
```python3
1470+
from nicegui import ui
1471+
1472+
p = {"value": 0}
1473+
ui.label().bind_text_from(p, "value", lambda v: f"Page {v}")
1474+
ui.pagination(
1475+
min=1,
1476+
max=5,
1477+
direction_links=True,
1478+
value=1,
1479+
on_change=lambda e: ui.notify(e.value)
1480+
).props('''
1481+
boundary-links
1482+
input
1483+
icon-first="skip_previous"
1484+
icon-last="skip_next"
1485+
icon-prev="fast_rewind"
1486+
icon-next="fast_forward"
1487+
''').bind_value_to(p)
1488+
1489+
ui.run(native=True)
1490+
```
1491+
1492+
![ui_pagination2](README_MORE.assets/ui_pagination2.png)
1493+
1494+
#### 3.9.9 ui.stepper(更新中)
1495+
1496+
1497+
1498+
#### 3.9.10 ui.timeline
13201499

13211500

13221501

1323-
ui.notification
1502+
#### 3.9.11 ui.notification
13241503

13251504

13261505

1327-
ui.dialog
1506+
#### 3.9.12 ui.dialog
13281507

13291508

13301509

1331-
ui.menu 菜单内容用别的控件
1510+
#### 3.9.13 ui.menu补充
13321511

1512+
嵌入其他内容
13331513

1514+
#### 3.9.14 ui.tooltip补充
13341515

1335-
ui.tooltip 上下文用其他内容
1516+
嵌入其他内容
13361517

13371518

13381519

@@ -1631,7 +1812,7 @@ with ui.element().classes('yellow'):
16311812
ui.run()
16321813
```
16331814

1634-
### 3.13 ui.keyboard的事件处理技
1815+
### 3.13 ui.keyboard的事件处理技巧
16351816

16361817
ui.keyborad可以在页面添加一个按键事件的响应。
16371818

0 commit comments

Comments
 (0)