【发布时间】:2021-12-02 18:41:50
【问题描述】:
我希望能够使用 Button 小部件退出我的 python kivy 应用程序。
我一直在查看How to exit a Kivy application using a button 中的答案,但一直收到错误消息。
我尝试将on_press 参数设置为ButtonApp.stop()、ButtonApp().stop() 和ButtonApp.get_running_app().stop(),但我不断收到NameError 错误消息。为什么?
我使用的是 python 3.9.1,jupyter notebook 6.0.1。
谢谢!
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
kv = '''
<NewButton>:
size_hint: None, None
size: 100, 100
Button:
text: "Exit"
font_size: 20
pos: 50, 50
size_hint: None, None
size: 50, 25
on_press: ButtonApp.stop()
'''
class NewButton(FloatLayout):
def callback1(self):
pass
class ButtonApp(App):
def build(self):
Builder.load_string(kv)
return NewButton()
if __name__ == '__main__':
ButtonApp().run()
# ERROR MESSAGE
NameError: name 'ButtonApp' is not defined
【问题讨论】:
-
将 on_press: ButtonApp.stop() 替换为 on_press: app.stop()
-
@NorbertTiborcz,感谢您的评论。我尝试了 on_press: app.stop(),但它似乎导致 python 崩溃,并且 kivy 输出显示'Leaving application in progress'。