我想知道如何访问RecycleView中的小部件。我构建了一个简单的示例:
main.py
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
class ShowBoxLayout(BoxLayout):
keys = ListProperty()
def __init__(self, **kwargs):
super(ShowBoxLayout, self).__init__(**kwargs)
self.keys = [x for x in range(5)]
def print_list(self):
#here I expect textinputs id but got empty dict
print(self.ids)
class TestApp(App):
def build(self):
bl = ShowBoxLayout()
return bl
app = TestApp()
app.run()
试验电压(千伏)
<ShowBoxLayout>:
RecycleView:
viewclass: 'TextInput'
data: [{'id': str(x)} for x in range(10)]
RecycleGridLayout:
cols: 1
default_size: None, dp(26)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
multiselect: False
touch_multiselect: False
Button:
text : 'Hello world'
on_press : root.print_list()
在这种情况下,我无法使用ID或其他任何东西访问其中的TextInput。我应该如何访问它以获取其中的文本
这是我按下按钮后得到的:{}
问题是您不能在python中为
ids
字典赋值。这只能在kv
中完成。因此,访问项目的另一种方法是将id
分配给RecycleGridLayout
,然后访问它的每个子项。您还可以定义viewclass
的方法来显示输入的文本:(我用
Builder.load_string()
作为自己的便利)请注意,由于这是一个
RecycleView
,因此viewclass
项是循环的,因此print_list()
方法可能不会访问每个data
元素的项,而只访问当前显示的项相关问题 更多 >
编程相关推荐