好的,我有一个应用程序,当您单击一个按钮时,会弹出一个窗口。在弹出窗口中,您可以安排事件。现在,当您单击“计划”按钮时,我希望它可以打印到已单击的终端。我试图在python中定义一个函数,并将其与我的id连接到我的kv文件中,以便记录按钮按下的操作,但它似乎无法正常工作。救命?可能是一个明显的答案,但我仍在学习大声笑
Python
def schedule_event(self, *args):
if self.root.ids['set_event']:
print('Working')
Kv文件
<ButtonPopup@Popup>:
title: 'Set Events'
title_align: 'center'
auto_dismiss: False
size_hint: None, None
size: 400, 200
GridLayout:
cols: 1
TextInput:
id: scheduled_event
hint_text: "Something scheduled for this day..."
BoxLayout:
Button:
id: set_event
text: "Schedule"
on_press: app.root.schedule_event()
on_release: root.dismiss()
Button:
id: cancel
text: "Cancel"
on_release: root.dismiss()
答案 0 :(得分:0)
KeyError
意味着set_event
根类App
中没有ids
,这是可以预期的。在您的.py
文件中,添加:
class ButtonPopup(Popup):
def schedule_event(self, *args):
if 'set_event` in self.ids:
print('Working')
else:
print('Missing set_event')
然后,在您的.kv
文件中,将<ButtonPopup@Popup>:
替换为<ButtonPopup>:
,这会将您的方法放在ButtonPopup
类中,可以轻松访问其中的ids
那堂课另外,在您的.kv
文件中,将on_press: app.root.schedule_event()
更改为on_press: root.schedule_event()
您在id
文件中设置的.kv
将在ButtonPopup
类中,而不是App
中。参见documentation。