我是Kivy的新手,我用Python/KivyMD开发了一个简单的UI,它显示了一个项目列表:每个列表都有一个复选框,允许用户选择该项目。2显示该列表的对象是从 kivymd.uix.list 继承而来的。3我想得到该列表的选定项目。4下面是代码:
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.floatlayout import MDFloatLayout
from kivymd.uix.list import IRightBodyTouch, OneLineAvatarIconListItem
from kivymd.uix.selectioncontrol import MDCheckbox
from kivymd.toast import toast
import numpy as np
Builder.load_string(
"""
<ListItemWithCheckbox>:
RightCheckbox:
<View>:
MDScrollView:
MDList:
id: scroll
"""
)
class ListItemWithCheckbox(OneLineAvatarIconListItem):
pass
class RightCheckbox(IRightBodyTouch, MDCheckbox):
pass
class View(MDFloatLayout):
detectedDevices = list()
for i in range(20):
device = dict(name='DEVICE ' + str(i), index=i+1, battery_level=np.random.randint(low=0, high=101))
detectedDevices.append(device)
def __init__(self, **kwargs):
super().__init__(**kwargs)
for i in range(len(self.detectedDevices)):
self.ids.scroll.add_widget(ListItemWithCheckbox(text=self.detectedDevices[i]['name']))
class MainApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.view = View()
def build(self):
self.title = ''
return self.view
if __name__ == '__main__':
MainApp().run()
1条答案
按热度按时间kgsdhlau1#
您可以使用
MDCheckbox
的on_state
方法维护选定项的列表,以便每当选定项时触发该列表的更新。下面是一种方法。首先,向
MDCheckBox
添加一个id
:然后修改
RightCheckbox
类,以便在任何RightCheckbox
的状态发生更改时运行选择更新代码:然后将
update_selections()
方法添加到您的应用: