我正在使用Kivy编写程序。
在“桌面”操作系统下,使用键盘输入是很正常的,我的代码也是这样做的。
最初的回答:我正在使用Kivy编写程序。
在“桌面”操作系统下,使用键盘输入是很正常的,我的代码也是这样做的。
然而,在Android下启动应用程序(我怀疑)会导致屏幕键盘出现。显然,软键盘可以被关闭,但更好的解决方案是仅在存在硬件键盘时打开键盘 - 或者在Android上不自动使用它。
有没有办法确定Kivy上是否存在物理键盘?
有没有办法确定我的应用程序正在Android上运行(啊,我猜测是使用
编辑:如果我在
在“桌面”操作系统下,使用键盘输入是很正常的,我的代码也是这样做的。
最初的回答:我正在使用Kivy编写程序。
在“桌面”操作系统下,使用键盘输入是很正常的,我的代码也是这样做的。
class ProgLayout( FloatLayout ):
def __init__(self, **kwargs):
super( ProgLayout, self ).__init__(**kwargs)
# Keyboard Handling (if any)
self.keyboard = Window.request_keyboard(self.keyboard_closed, self)
self.keyboard.bind(on_key_down=self.on_keyboard_down)
self.keyboard.bind(on_key_up=self.on_keyboard_up)
self.key_states = { 'up':False, 'down':False, 'left':False, 'right':False }
def on_keyboard_down( self, keyboard, keycode, text, modifiers ):
#print("ON_KEYBOARD_DOWN")
#print('The key', keycode, 'have been pressed')
#print(' - text is %r' % text)
#print(' - modifiers are %r' % modifiers)
junk, key = keycode
keymap = { 'up':Directions.NORTH, 'down':Directions.SOUTH, 'left':Directions.WEST, 'right':Directions.EAST }
if ( key in ( 'up', 'down', 'left', 'right' ) ):
self.key_states[ key ] = True
self.handleKeys()
def on_keyboard_up( self, keyboard, keycode ):
#print("ON_KEYBOARD_UP")
junk, key = keycode
if ( key in ( 'up', 'down', 'left', 'right' ) ):
self.key_states[ key ] = False
self.handleKeys()
然而,在Android下启动应用程序(我怀疑)会导致屏幕键盘出现。显然,软键盘可以被关闭,但更好的解决方案是仅在存在硬件键盘时打开键盘 - 或者在Android上不自动使用它。
有没有办法确定Kivy上是否存在物理键盘?
有没有办法确定我的应用程序正在Android上运行(啊,我猜测是使用
platform.system()
或sys.platform
)。编辑:如果我在
buildozer.spec
清单中包含sys
或platform
,则buildozer无法构建.APK。尽管如此,导入sys
似乎仍然有效。但在我的Android平板电脑上,sys.platform
报告为“Linux”,因此这不是一种前进的方式。
from kivy.utils import platform
- Erik