Python:如何在创建 RecycleView 时访问自定义参数?
Posted
技术标签:
【中文标题】Python:如何在创建 RecycleView 时访问自定义参数?【英文标题】:Python: how to access a custom parameter on the RecycleView creation? 【发布时间】:2021-10-16 13:03:34 【问题描述】:我想知道在哪里可以看到和使用在创建小部件期间数据上提供的参数。
问题:__init__
似乎没有信息,因此必须在调用之后进行,所以我想知道何时可以使用我的自定义参数。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.recycleview import RecycleView
from kivy.factory import Factory as F
Builder.load_string('''
<RV>:
viewclass: 'CustomLabel'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
''')
class CustomLabel(F.Label):
def __init__(self, **kwargs):
super().__init__(**kwargs)
print(kwargs, "why can't I see the stuff from data ???")
class RV(RecycleView):
def __init__(self, **kwargs):
super(RV, self).__init__(**kwargs)
self.data = ['text': str(x), "new_parameter":"idk where am I" for x in range(100)]
class TestApp(App):
def build(self):
return RV()
if __name__ == '__main__':
TestApp().run()
【问题讨论】:
【参考方案1】:data
的属性没有在CustomLabel
的__init__()
方法中设置,它们是在创建基本CustomLabel
之后单独设置的。您可以通过将 on_text()
方法添加到您的 CustomLabel
来看到这一点:
class CustomLabel(F.Label):
def __init__(self, **kwargs):
super().__init__(**kwargs)
print(kwargs, "why can't I see the stuff from data ???")
def on_text(self, instance, new_text):
print('CustomLabel', id(instance), 'text set to:', new_text)
【讨论】:
我们可以参加这个活动吗?添加数据时我们可以防止吗? (然后添加一些东西,我需要在获得访问权的那一刻使用数据中的东西) 不确定你的意思。对data
的更改会触发CustomLabels
的刷新。您可以将一个方法绑定到data
(或者只是在RV
类中添加一个on_data()
方法),但是在这种方法中更改data
将触发对该方法的另一个调用。很容易创建这样的无限循环。
我在“行”中有多个 TextInput
(BoxLayout
)。我的RecycleView
充满了“行”。我将“text_list”作为数据中的参数,但我不知道如何在启动时编写它们。 (我试图在__init__
和on_kv_post
上写它,但这不起作用。这就是为什么我需要找到我必须绑定(或覆盖)的函数。我知道如何使用refresh()
但是在生产线上已经太晚了。
(我不想用复杂的例子吓到人们,这就是我简化它的原因,但目的更模糊,确实:p)以上是关于Python:如何在创建 RecycleView 时访问自定义参数?的主要内容,如果未能解决你的问题,请参考以下文章
RecycleView 不从 Google Firestore 检索数据