【问题标题】:Exiting a Kivy application using a button - NameError使用按钮退出 Kivy 应用程序 - 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'。

标签: python kivy


【解决方案1】:

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

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

结果会一样。

【讨论】:

    猜你喜欢
    • 2015-12-02
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多