章节知识点总览
5.2 DropDown下拉列表
在Kivy中可以使用小部件和下拉列表实现下拉框功能,下拉框定位是自动的(如果小部件上方有空就会出现在上方,下方有空就会出现在下方),而且可以包含任何小部件,如简单的按钮、图片等等。
5.2.1 使用方法
实例:DropDown下拉列表的使用方法
新建一个dropdown.py文件,引入base包下的runTouchApp类,之后添加一个按钮来触发下拉框,具体代码如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.base import runTouchApp
class CustomDropDown(DropDown):
#在.kv文件中添加下拉选项
pass
class DropDownBox(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
dropdown = CustomDropDown()
#单击该按钮触发下拉框
main_button = Button(text='SelectItem',size_hint=(0.2,0.15),\
pos_hint={'center_x':0.5,'center_y':0.5})
main_button.bind(on_release=dropdown.open)
#绑定选中后回调的方法,把main_button的text属性设置为传递过来的x
dropdown.bind(on_select=lambda instance,\
x:setattr(main_button,'text',x))
#self.add_widget(main_button)
#创建一个MTWindow并将窗口小部件作为根窗口的小部件添加到窗口中
runTouchApp(main_button)
class DropDownApp(App):
def build(self):
return DropDownBox()
if __name__ == '__main__':
from kivy.core.window import Window
Window.clearcolor = [.8,.8,.8,1]
DropDownApp().run()
在dropdown.py文件中添加一个CustomDropDown()类并继承DropDown,然后新建dropdown.kv文件,在其中添加下拉列表的内容,具体代码如下:
<CustomDropDown>:
Button:
text:'Item0'
size_hint_y:None
height:44
on_release:root.select('item0')
Button:
text:'Item1'
size_hint_y:None
height:44
on_release:root.select('item1')
Button:
text:'Item2'
size_hint_y:None
height:44
on_release:root.select('item2')
运行dropdown.py文件,点击中间按钮,出现下拉菜单,选中其中选项,中间按钮即变成该下拉选项内容,效果如下图:
5.2.2 常用属性
DropDown常用属性
属性 | 说明 |
auto_dismiss | 在展开状态下单机下拉框时,是否自动关闭下拉框,默认为True |
auto_width | 下拉选项的宽度是否设置为与下拉框一致,默认为True |
dismiss_on_select | 选择完成后,是否自动关闭下拉框,默认为True |
max_height | 下拉选项可以采用的最大高度,默认为None |
min_stat_time | 下拉框折叠前的最短时间,默认值为配置文件中min_stat_time的值 |
select(data) | 选择具体的选项并收起下拉框后,下拉框显示的值 |
open(widget) | 打开下拉框,并将其附加到特定的小部件 |
dismiss(*largs) | 从窗口中删除下拉窗口小部件 |
add_widget(*largs) | 添加一个新的小部件作为此小部件的子级 |
clear_widgets() | 删除所有(或指定的)下拉框内的小部件 |
remove_widget(*largs) | 从该小部件的子级中删除一个小部件 |
on_select | 选择完成后触发,选择的数据作为第一个参数传递 |
on_dismiss | 选择完成后,折叠下拉框时触发 |
上一篇:高级UX部件——Bubble气泡
下一篇:高级UX部件——Popup弹窗