Skip to content

Commit 87bc949

Browse files
author
peter
committed
Update to 3.10.5.
1 parent 7a34acd commit 87bc949

File tree

10 files changed

+262
-20
lines changed

10 files changed

+262
-20
lines changed

README_INDEX.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ ui.run(native=True)
398398

399399
`text`参数,字符串类型,表示显示在按钮上的文字,如果是英文的话,默认全部大写。该参数默认只支持字符串类型,但是整数和小数可以直接使用,其他类型需要先转换为字符串类型才能传入。
400400

401-
`color`参数,字符串类型或者None,表示按钮的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名)或者`None`(即让按钮变成默认颜色)。
401+
`color`参数,字符串类型或者None,表示按钮的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名)或者`None`(即让按钮变成默认颜色),默认为'primary',即和主题颜色一致
402402

403403
`icon`参数,字符串类型,表示按钮额外显示的图标,支持传入字符串类型的图标名,具体名字会在`ui.icon`中介绍,这里不做详细介绍。
404404

README_MORE.assets/ui_badge.png

4.74 KB
Loading
4.32 KB
Loading
9.13 KB
Loading

README_MORE.assets/ui_chip.png

16.9 KB
Loading
7.15 KB
Loading
9.27 KB
Loading
7.05 KB
Loading

README_MORE.assets/ui_toggle.png

7.17 KB
Loading

README_MORE.md

Lines changed: 261 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1835,55 +1835,297 @@ ui.run(native=True)
18351835

18361836
### 3.10 其他常用控件(更新中)
18371837

1838-
#### 3.10.1 ui.button_group
1838+
#### 3.10.1 ui.dropdown_button
18391839

1840-
按钮组,
1840+
前面在介绍菜单控件的时候,是用按钮内嵌入菜单,实现点击按钮弹出菜单的效果。其实,在NiceGUI中,有个控件可以实现一步到位,无需嵌入,那就是ui.dropdown_button——下拉按钮。
18411841

1842+
先看示例:
18421843

1844+
```python3
1845+
from nicegui import ui
1846+
1847+
with ui.dropdown_button('Open me!', auto_close=True, split=True):
1848+
ui.item('Item 1', on_click=lambda: ui.notify('You clicked item 1'))
1849+
ui.item('Item 2', on_click=lambda: ui.notify('You clicked item 2'))
1850+
1851+
ui.run(native=True)
1852+
```
1853+
1854+
![ui_dropdown_button](README_MORE.assets/ui_dropdown_button.png)
1855+
1856+
可以看到,下拉按钮的弹出效果很像在按钮中嵌入了菜单,但需要的代码更少,结构也更清晰。当然,样式上因为多了一个下拉的三角,没法像嵌入菜单那样灵活,读者可以根据需求自主选择。
1857+
1858+
下拉按钮支持以下参数:
1859+
1860+
`text`参数,字符串类型,表示显示在按钮上的文字,和普通按钮一样。
1861+
1862+
`value`参数,布尔类型,表示下拉按钮的初始状态是否为下拉内容弹出,默认为`False`
1863+
1864+
`on_value_change`参数,可调用类型,表示下拉按钮的value变化(即下拉内容弹出状态变化)时执行什么操作。
1865+
1866+
`on_click`参数,可调用类型,表示点击下拉按钮主体(不是右边的小三角)时执行什么操作,和普通按钮一样。
1867+
1868+
`color`参数,字符串类型或者None,表示按钮的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名)或者`None`(即让按钮变成默认颜色),默认为'primary',即和主题颜色一致。
1869+
1870+
`icon`参数,字符串类型,表示按钮额外显示的图标,支持传入字符串类型的图标名,和普通按钮一样。
1871+
1872+
`auto_close`参数,布尔类型,表示点击下拉内容之后是否自动关闭下拉内容的弹出,就和菜单项一样,默认为`False`
1873+
1874+
`split`参数,布尔类型,表示是否显示分隔符来区分按钮主体和下拉弹出响应区,默认为`False`
1875+
1876+
同样的,下拉按钮也可以嵌入其他控件,实现想要的效果:
1877+
1878+
```python3
1879+
from nicegui import ui
1880+
1881+
with ui.dropdown_button('Settings', icon='settings', split=True):
1882+
with ui.row().classes('p-4 items-center'):
1883+
ui.icon('volume_up', size='sm')
1884+
ui.switch().props('color=negative')
1885+
ui.separator().props('vertical')
1886+
ui.icon('mic', size='sm')
1887+
ui.switch().props('color=negative')
1888+
1889+
ui.run(native=True)
1890+
```
1891+
1892+
![ui_dropdown_button2](README_MORE.assets/ui_dropdown_button2.png)
1893+
1894+
想要修改下拉触发区的图标,可以参考[API文档](https://quasar.dev/vue-components/button-dropdown#qbtndropdown-api),修改'dropdown-icon'属性,
1895+
1896+
```python3
1897+
from nicegui import ui
1898+
1899+
with ui.dropdown_button("Open me!", auto_close=True, split=True).props(
1900+
'no-icon-animation dropdown-icon="menu"'
1901+
):
1902+
ui.item("Item 1", on_click=lambda: ui.notify("You clicked item 1"))
1903+
ui.item("Item 2", on_click=lambda: ui.notify("You clicked item 2"))
1904+
1905+
ui.run(native=True)
1906+
```
1907+
1908+
![ui_dropdown_button3](README_MORE.assets/ui_dropdown_button3.png)
1909+
1910+
#### 3.10.2 ui.button_group
1911+
1912+
下拉按钮看起来就像两个按钮组合到一起,也可以用按钮组控件模拟实现,让右边的按钮支持更多功能:
1913+
1914+
```python3
1915+
from nicegui import ui
1916+
1917+
with ui.button_group():
1918+
ui.button('menu')
1919+
ui.separator().props('vertical')
1920+
ui.button(icon='menu')
1921+
1922+
ui.run(native=True)
1923+
```
1924+
1925+
![ui_button_group](README_MORE.assets/ui_button_group.png)
1926+
1927+
下拉按钮也是按钮,一样可以和按钮组组合使用:
1928+
1929+
```python3
1930+
from nicegui import ui
1931+
1932+
with ui.button_group():
1933+
ui.button('One')
1934+
ui.button('Two')
1935+
with ui.dropdown_button('Dropdown'):
1936+
ui.item('Item 1', on_click=lambda: ui.notify('Item 1'))
1937+
ui.item('Item 2', on_click=lambda: ui.notify('Item 2'))
1938+
1939+
ui.run(native=True)
1940+
```
1941+
1942+
![ui_button_group2](README_MORE.assets/ui_button_group2.png)
1943+
1944+
#### 3.10.3 ui.badge
1945+
1946+
角标控件,可以在一个控件的上层显示简单的文字,就像手机图标上提示有多少消息未读的角标一样:
1947+
1948+
```python3
1949+
from nicegui import ui
1950+
1951+
with ui.button('Button'):
1952+
ui.badge(text='99+', color='red',text_color='black',outline=False).props('floating')
1953+
1954+
ui.run(native=True)
1955+
```
1956+
1957+
![ui_badge](README_MORE.assets/ui_badge.png)
1958+
1959+
角标控件支持以下参数:
1960+
1961+
`text`参数,字符串类型,显示在角标内的文字。
1962+
1963+
`color`参数,字符串类型或者None,表示角标的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名)或者`None`(即让角标变成默认颜色),默认为'primary',即和主题颜色一致。
1964+
1965+
`text_color`参数,字符串类型或者None,表示文字的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名)或者`None`(即让文字变成默认颜色)。
1966+
1967+
`outline`参数,布尔类型,是否启用轮廓线风格,默认为`False`即填充风格。
1968+
1969+
更多角标的设计属性可以参考[API文档](https://quasar.dev/vue-components/badge#qbadge-api),示例代码中的'floating'就是修改了设计属性,让角标显示在右上角。其他有用的属性有'rounded'、'transparent'、'label'等。
1970+
1971+
#### 3.10.4 ui.chip
1972+
1973+
晶片控件,看上去有点像角标,但交互性远远高于角标。可以点击、选择、移除,设计属性也比角标多。先看示例代码:
1974+
1975+
```python3
1976+
from nicegui import ui
1977+
1978+
with ui.row().classes("gap-1") as row:
1979+
ui.chip("Click me", icon="ads_click", on_click=lambda: ui.notify("Clicked"))
1980+
chip = ui.chip(
1981+
text="Selectable",
1982+
selectable=True,
1983+
icon="bookmark",
1984+
color="orange",
1985+
on_selection_change=lambda e: ui.notify(e.sender.selected),
1986+
)
1987+
chip2 = ui.chip(
1988+
text="Removable",
1989+
removable=True,
1990+
icon="label",
1991+
color="indigo-3",
1992+
on_value_change=lambda e: ui.notify(e.value),
1993+
)
1994+
ui.chip("Styled", icon="star", color="green").props("outline square")
1995+
ui.chip("Disabled", icon="block", color="red").set_enabled(False)
1996+
ui.button("RESET", on_click=lambda: (chip.set_selected(False), chip2.set_value(True)))
1997+
1998+
ui.run(native=True)
1999+
```
2000+
2001+
![ui_chip](README_MORE.assets/ui_chip.png)
2002+
2003+
晶片控件支持以下参数:
2004+
2005+
`text`参数,字符串类型,显示在控件内的内容。
2006+
2007+
`icon`参数,字符串类型,控件内的图标。
2008+
2009+
`color`参数,字符串类型,表示控件的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名),默认为'primary',即和主题颜色一致。
2010+
2011+
`text_color`参数,字符串类型或者None,表示文字的颜色,支持传入字符串类型的颜色类(Quasar、 Tailwind、CSS的颜色名)或者`None`(即让文字变成默认颜色)。
2012+
2013+
`on_click`参数,可调用类型,当点击控件时执行什么操作。注意,设置此参数,会同时添加控件的'clickable'属性,启用控件的鼠标悬停效果,让控件响应'click'事件。也就是说,如果直接使用`ui.chip('test').on('click',handler=lambda: ui.notify("Clicked"))`设置点击事件响应,这样操作并不能成功,只有`ui.chip('test').props('clickable').on('click',handler=lambda: ui.notify("Clicked"))`这样同时添加'clickable'属性才行。否则,只能用`ui.chip('test').on('mousedown',handler=lambda: ui.notify("Clicked"))`这样直接监听鼠标事件的响应才行,但这样会导致控件没有鼠标悬停效果。
2014+
2015+
`selectable`参数,布尔类型,控件是否可选择,默认为`False`
2016+
2017+
`selected`参数,布尔类型,控件是否已经被选择,默认为`False`
2018+
2019+
`on_selection_change`参数,可调用类型,当控件被选择时执行什么操作。
2020+
2021+
`removable`参数,布尔类型,控件是否可被移除,默认为`False`。如果设置为`True`,控件上会多一个"X"移除按钮。
2022+
2023+
`on_value_change`参数,可调用类型,当控件的被移除状态变化时执行什么操作。实际上,控件被移除、未被移除,就是将控件的value设置为`False``True`
2024+
2025+
更多的设计属性可以参考[官方API](https://quasar.dev/vue-components/chip#qchip-api)
2026+
2027+
以下是一个动态添加、移除控件的代码示例:
2028+
2029+
```python3
2030+
from nicegui import ui
2031+
2032+
def add_chip():
2033+
with chips:
2034+
ui.chip(label_input.value, icon='label', color='silver', removable=True)
2035+
label_input.value = ''
2036+
2037+
label_input = ui.input('Add label').on('keydown.enter', add_chip)
2038+
with label_input.add_slot('append'):
2039+
ui.button(icon='add', on_click=add_chip).props('round dense flat')
2040+
2041+
with ui.row().classes('gap-0') as chips:
2042+
ui.chip('Label 1', icon='label', color='silver', removable=True)
2043+
2044+
ui.button('Restore removed chips', icon='unarchive',
2045+
on_click=lambda: [chip.set_value(True) for chip in chips]) \
2046+
.props('flat')
2047+
2048+
ui.run(native=True)
2049+
```
2050+
2051+
#### 3.10.5 ui.toggle
2052+
2053+
切换控件,功能上和单选按钮一样,操作起来有点像老式磁带播放机的按钮,每次只能点选一个:
2054+
2055+
```python3
2056+
from nicegui import ui
2057+
2058+
toggle1 = ui.toggle(
2059+
options=[1, 2, 3], value=1, clearable=True, on_change=lambda e: ui.notify(e.value)
2060+
)
2061+
toggle2 = ui.toggle({1: "A", 2: "B", 3: "C"}).bind_value(toggle1, "value")
2062+
2063+
ui.run(native=True)
2064+
```
2065+
2066+
![ui_toggle](README_MORE.assets/ui_toggle.png)
2067+
2068+
切换控件支持以下参数:
2069+
2070+
`options`参数,列表类型或者字典类型,表示切换控件的所有选项。如果是列表,每个元素既是当前选择的值,也是显示出来的文本。如果是字典,则键(key)是当前选择的值,值(value)是显示出来的文本。
2071+
2072+
`value`参数,表示控件初始选择的值。
2073+
2074+
`on_change`参数,可调用类型,当值变化时执行什么操作
2075+
2076+
`clearable`参数,布尔类型,表示是否可以通过点击当前选择的选项来取消选择,默认为`False`,即默认必须选择一个,没法取消选择。
2077+
2078+
更多设计属性参考[官方API](https://quasar.dev/vue-components/button-toggle#qbtntoggle-api)
2079+
2080+
#### 3.10.6 ui.radio(更新中)
2081+
2082+
2083+
2084+
#### 3.10.7 ui.select(更新中)
2085+
2086+
2087+
2088+
#### 3.10.8 ui.checkbox(更新中)
2089+
2090+
2091+
2092+
#### 3.10.9 ui.switch(更新中)
18432093

1844-
ui.dropdown_button
18452094

18462095

2096+
#### 3.10.10 ui.range(更新中)
18472097

1848-
ui.badge
18492098

18502099

2100+
#### 3.10.11 ui.joystick(更新中)
18512101

1852-
ui.chip
18532102

1854-
ui.toggle
18552103

1856-
ui.radio
2104+
#### 3.10.12 ui.textarea(更新中)
18572105

18582106

18592107

1860-
ui.select
2108+
#### 3.10.13 ui.number(更新中)
18612109

18622110

18632111

1864-
ui.checkbox
2112+
#### 3.10.14 ui.color_input(更新中)
18652113

18662114

18672115

1868-
ui.switch
2116+
#### 3.10.15 ui.color_picker(更新中)
18692117

1870-
ui.range
18712118

1872-
ui.joystick
18732119

1874-
ui.textarea
2120+
#### 3.10.16 ui.date(更新中)
18752121

1876-
ui.number
18772122

1878-
ui.color_input
18792123

1880-
ui.color_picker
2124+
#### 3.10.17 ui.time(更新中)
18812125

1882-
ui.date
18832126

1884-
ui.time
18852127

1886-
ui.upload
2128+
#### 3.10.18 ui.upload(更新中)
18872129

18882130

18892131

0 commit comments

Comments
 (0)