@@ -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'):
16311812ui.run()
16321813```
16331814
1634- ### 3.13 ui.keyboard的事件处理技
1815+ ### 3.13 ui.keyboard的事件处理技巧
16351816
16361817ui.keyborad可以在页面添加一个按键事件的响应。
16371818
0 commit comments