gpt4 book ai didi

python - 使用 ESCAPE ARROW 防止 Android 上的 kivy 应用退出

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:22 26 4
gpt4 key购买 nike

我想用 ESCAPE ARROW 阻止 Android 上的 kivy 应用程序退出。

当我在 config.ini 文件中写入 exit_on_escape = 0 时,它不会改变任何东西(但是在 WINDOWS 8 上使用 Esc关键这个工作)。

我也曾尝试拦截 on_request_close 失败。

import kivy
kivy.require('1.0.8')

from kivy.core.window import WindowBase
from kivy.uix.widget import Widget
from kivy.app import App
from kivy.clock import Clock

class Test(Widget):

def __init__(self, **kwargs):
super(Test,self).__init__(**kwargs)

class TestApp(App):
def build(self):

Clock.schedule_once(self.my_callback, 0)
return Test()

def my_callback(self,*dt):
print("mycallback")
win=self._app_window
win.fullscreen=1 #OK
win.bind(on_request_close=self.alwaystrue)

def alwaystrue(*largs, **kwargs) :
print("alwaystrue")#never happens ...
return True
if __name__ == '__main__':
TestApp().run()

最佳答案

在你的 App 类中做这样的事情:

from kivy.app import App
from kivy.core.window import Window

class MyApp(App):
def build(self):
self.bind(on_start=self.post_build_init)
# do all your normal stuff as well
return whatever

def post_build_init(self,ev):
if platform() == 'android':
import android
android.map_key(android.KEYCODE_BACK, 1001)

win = Window
win.bind(on_keyboard=self.key_handler)

def key_handler(self, window, keycode1, keycode2, text, modifiers):
if keycode1 == 27 or keycode1 == 1001:
# Do whatever you want here - or nothing at all
# Returning True will eat the keypress
return True
return False

这可能不是所有必要的(使用中间 post_build_init() 方法和 android.map_key() 东西),但我最初是从邮件中得到的发布,我认为我没有更新版本。无论如何,它对我有用。

关于python - 使用 ESCAPE ARROW 防止 Android 上的 kivy 应用退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335870/

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