【发布时间】:2020-05-24 17:32:32
【问题描述】:
我正在尝试将按下的Button 的id 传递给下面的move_to_chat() 方法,以便我可以评估它并创建一个变量。但是目前我的move_to_chat() 方法运行了两次,结果不同。
我不明白为什么绑定函数调用move_to_chat 函数两次,结果不同(第二次产生我想要的结果)
py 文件
class ChangedButton(Button):
dock_id = StringProperty()
class WindowManager(ScreenManager):
pass
class MyApp(MDApp):
def on_start(self):
self.docs = self.my_firestore.db.collection(u'users').where(u'value', u'==', True).stream()
select_chat = self.root.get_screen("select_chat").ids['select_chat_grid']
for doc in self.docs: # cycle through values in database and create Buttons for them
dict = doc.to_dict()
btn = ChangedButton(text="{} {}".format(dict['first_name'], dict['last_name']), dock_id=doc.id)
btn.bind(on_release=lambda x:self.move_to_chat(doc.id))
select_chat.add_widget(btn)
def move_to_chat(self, doc_id):
print("logged in user: ", self.local_id)
print("user to message: ", doc_id)
group_id = self.local_id + ":"+ doc_id
print(group_id)
MDApp.get_running_app().sm.current = "chat"
kv文件
<ChangedButton>
on_release: app.move_to_chat(self.dock_id)
【问题讨论】: