5.nicegui最佳实践之“侧边栏”

  1. 问题:

之前用streamlit开发过应用,侧边栏的实现相当容易,直接用“st.sidebar()”就可以实现一个侧边栏。但是在streamlit毕竟有它自己的劣势,现在使用nicegui,如何方便的实现侧边栏呢?

   2.效果及说明

先看效果,在上一节“导航栏”的基础之上额外增加了一个按钮,用于打开和关闭左侧边栏。左侧边栏包含“大屏页面”和“管理员页面”两个子菜单。

3.核心概念:

left_drawer”提供了左侧边栏(同样还有“right_drawer”,用作右侧边栏)。left_drawer跟streamlit的sidebar很像,但是需要注意的是,sidebar默认自带了“开关”按钮,left_drawer需要自己实现一个。

icon”在button上显示图片,而不显示文字,这样效果会更好。图标库推荐用“material-icons”。

4.示例代码(节选):

代码越来越复杂,文章里逐渐会只选取跟本节相近的内容,完整的可用代码,后面会考虑上传到公有云上,到时候再告诉大家。

1.#定义导航栏,并作为上下文,“套”在每个网页上  
2.@contextmanager  
3.def frame():  
4.    with ui.header():  
5.        with ui.row():  
6.            ##导航按钮  
7.            ui.button(icon='menu',on_click=lambda :left_drawer.toggle() ).props('flat color=white')  
8.            for section in sections:  
9.                #导航栏的每一个导航格,就是一个按钮  
10.                with ui.link(target = section.uri):  
11.                    """ 
12.                    flat:让button扁平化,没有四周的框 
13.                    """  
14.                    ui.button(section.section_name).props("flat").classes("text-blue-grey-1")  
15.    with ui.left_drawer(value = False).classes("bg-blue-grey-1") as left_drawer:  
16.        for item in left_navs:  
17.            if item.section_name is not None:  
18.  
19.                        with ui.link(target = item.uri):  
20.                            ui.button(item.section_name).props("flat").classes("text-blue-grey-10")  
21.            else:  
22.                ui.separator()  
23.    #生成器,  
24.    yield  

5.官方文档参考:

nicegui官方文档:https://nicegui.io/documentation/page_layout#reference_for_ui_left_drawer

关于联系方式,可以搜索那啥qiaojianpan_life”加我交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲键盘的生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值