在app关闭时更改变量

时间:2018-06-18 11:10:22

标签: python kivy

我正在尝试更改将停止某些线程的变量值,我想要的是在关闭应用时更改该值,我的意思是当您单击X并关闭它时。

我正在尝试一些东西,但它不起作用:

 def on_request_close(self):
    close()
    print("awdw")
    self.textpopup(title='Exit', text='Are you sure?')

这是我在close()上调用的on_request_close()方法:

def close(self):
    print("Cerrando")
    print(str(self.exit))
    self.exit = False

2 个答案:

答案 0 :(得分:0)

您可能需要执行Window.bind(on_request_close=on_request_close)之类的操作。

答案 1 :(得分:0)

解决方案

  1. 要在关闭窗口之前显示弹出窗口小部件,请将return True附加到on_request_close()方法。
  2. Window.bind(on_request_close=self.on_request_close)添加到build()方法。
  3. 详情请参阅示例。

    Window » on_request_close

    on_request_close(*largs, **kwargs)
    
      

    关闭窗口前调用的事件。如果绑定函数返回   没错,窗口不会关闭。

    实施例

    main.py

    from kivy.app import App
    from kivy.uix.label import Label
    from kivy.uix.popup import Popup
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.button import Button
    from kivy.properties import BooleanProperty
    from kivy.core.window import Window
    
    
    class MyApp(App):
        exit = BooleanProperty(True)
    
        def build(self):
            Window.bind(on_request_close=self.on_request_close)
            return Label(text="Hello world")
    
        def on_request_close(self, *largs, **kwargs):
            print('on_request_close:')
            self.close()
            print("awdw")
            self.textpopup(title='Exit', text='Are you sure?')
            return True
    
        def close(self):
            print("Cerrando")
            print(str(self.exit))
            self.exit = False
    
        def textpopup(self, title='', text=''):
            print('textpopup:')
            box = BoxLayout(orientation='vertical')
            box.add_widget(Label(text=text))
            mybutton = Button(text='OK', size_hint=(1, 0.25))
            box.add_widget(mybutton)
            popup = Popup(title=title, content=box, size_hint=(None, None), size=(400, 400))
            mybutton.bind(on_release=self.stop)
            popup.open()
    
    
    if __name__ == '__main__':
        MyApp().run()
    

    输出

    Img01 - Popup widget