<p>在以下表达式中:</p>
<pre><code>search_results: search_results_list.item_strings
</code></pre>
<p>如果设置了绑定如果<code>item_strings</code>被更新,那么<code>search_results</code>将用这些新值更新,但这并不意味着如果<code>search_results</code>被修改<code>item_strings</code>将被通知和更新。你知道吗</p>
<p>你必须做的是相反的,我显示如下:</p>
<p><strong>*.py</strong></p>
<pre><code>from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty, ListProperty
class LibraryMain(BoxLayout):
search_input = ObjectProperty()
search_results = ListProperty(['a'])
def __init__(self, **kwargs):
BoxLayout.__init__(self, **kwargs)
def searched_location(self):
print(self.search_results)
newis = ['1', '2', '3', '4']
self.search_results.extend(newis)
print(self.search_results)
print(f"""Searched for: {self.search_input} {self.search_results}""")
class LibraryApp(App):
pass
if __name__ == '__main__':
LibraryApp().run()
</code></pre>
<p><strong>*.kv</strong></p>
<pre><code>LibraryMain:
<LibraryMain>:
orientation: "vertical"
search_input: search_box.text
BoxLayout:
height: "40dp"
size_hint_y: None
TextInput:
id: search_box
size_hint_x: 50
multiline: False
on_text_validate: root.searched_location()
Button:
text: "Search"
size_hint_x: 25
on_press: root.searched_location()
Button:
text: "Current Location"
size_hint_x: 25
on_press: root.searched_location()
ListView:
id: search_results_list
item_strings: root.search_results # <
</code></pre>
<hr/>
<p>总之,以下表达式:</p>
<pre><code>obj_a:
property_a : obj_b.property_b
</code></pre>
<p>指示修改<code>obj_b</code>的<code>property_b</code>,然后<code>obj_a</code>的<code>property_a</code>将被更新,反之亦然。你知道吗</p>
<pre><code>obj_a.property_a < - obj_b.property_b
</code></pre>