使用按钮退出 Kivy 应用程序 - NameError

Posted

技术标签:

【中文标题】使用按钮退出 Kivy 应用程序 - NameError【英文标题】:Exiting a Kivy application using a button - NameError 【发布时间】: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'。 【参考方案1】:

on_press: ButtonApp.stop() 替换为on_press: app.stop()

#:import App kivy.app.App
on_press: App.get_running_app().stop()

结果会一样。

【讨论】:

以上是关于使用按钮退出 Kivy 应用程序 - NameError的主要内容,如果未能解决你的问题,请参考以下文章

按“退出”时离开 kivy 应用程序

在 kivy 退出时做点啥

Kivy:使用按钮制作持久通知

Kivy 中的更改颜色按钮

带有kivy的android上的后退按钮功能

在 ubuntu linux 中调试 kivy 应用程序时出现问题,当我尝试调试应用程序时,它开始导入要求,然后显示错误并退出