Как запустить метод на выходе из приложения киви - PullRequest
0 голосов
/ 03 февраля 2019

Я хотел бы запустить метод, когда пользователь пытается выйти из приложения, например, типа «Вы уверены, что хотите выйти» или «Хотите ли вы сохранить файл», когда пользователь пытаетсяЧтобы выйти, нажмите кнопку «Выход» в верхней части окна

Что-то вроде on_quit: app.root.saveSession()

1 Ответ

0 голосов
/ 03 февраля 2019

Если вы хотите, чтобы ваше приложение просто запускало вещи после закрытия графического интерфейса, самый простой и наименьший подход - поместить любой код выхода после TestApp().run().run() создает бесконечный цикл, который также очищает любые данные о событиях изнутри kivy, поэтому он не зависает.Этот бесконечный цикл прерывается, как только умирает экземпляр окна / графического интерфейса.Таким образом, любой код после будет выполняться только после того, как графический интерфейс тоже умирает.

Если вы хотите создать изящное завершение работы графического интерфейса, например, при событиях закрытия сокета или всплывающем окне, спрашивающем пользователя, что это такое.очень хочется сделать, тогда создание ловушки для события on_request_close - вот путь:

from kivy.config import Config
Config.set('kivy', 'exit_on_escape', '0')

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.core.window import Window


class ChildApp(App):

    def build(self):
        Window.bind(on_request_close=self.on_request_close)
        return Label(text='Child')

    def on_request_close(self, *args):
        self.textpopup(title='Exit', text='Are you sure?')
        return True

    def textpopup(self, title='', text=''):
        """Open the pop-up with the name.

        :param title: title of the pop-up to open
        :type title: str
        :param text: main text of the pop-up to open
        :type text: str
        :rtype: None
        """
        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=(600, 300))
        mybutton.bind(on_release=self.stop)
        popup.open()


if __name__ == '__main__':
    ChildApp().run()

Предоставлено pythonic64 , который создал gist по темев выпуске обратный путь, когда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...