gpt4 book ai didi

python - 如何在 kivy 应用程序退出时运行方法

转载 作者:行者123 更新时间:2023-12-02 08:47:18 38 4
gpt4 key购买 nike

当用户尝试退出应用程序时,我想运行一个方法,类似于每当用户尝试退出时出现“您确定要退出吗”或“您想保存文件吗”类型的消息单击窗口顶部的“退出”按钮退出

像这样的东西on_quit:app.root.saveSession()

最佳答案

如果您希望应用程序在 GUI 关闭后简单地运行,最简单、最小的方法是将任何退出代码放在 TestApp().run() 之后。 run() 创建一个无限循环,它还会清除 kivy 中的所有事件数据,因此它不会挂起。一旦 window/gui 实例死亡,这个无限循环就会中断。因此,之后的任何代码也只有在 GUI 终止后才会执行。

如果您想通过套接字关闭事件或弹出窗口询问用户是否真正想要执行的操作来创建 GUI 的正常关闭,那么可以为 on_request_close 事件创建一个钩子(Hook):

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关于该主题 issue很久以前。

关于python - 如何在 kivy 应用程序退出时运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54501099/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com