我正在使用Kivy框架在 Python 3 中开发 UI 应用程序。Kivy 应用程序是全屏的。每当我使用物理键盘执行触摸事件或键入时,底层桌面环境将接收触摸和键盘事件以及我的 Kivy 应用程序。
例如,如果我在桌面上打开一个文本文件,然后运行我的 Kivy 应用程序,我可以在 Kivy 应用程序处于前台(全屏)时盲目地在文本文件中键入文本。Kivy 应用程序会忽略物理键盘输入,因为我在配置文件中keyboard_mode
设置了该选项。dock
触摸事件在我的 Kivy 应用程序中正常工作,我可以选择执行其指定操作的按钮;但是,触摸事件也将传递到桌面。我通过在我的 Kivy 应用程序中盲目双击然后返回桌面以找到大量打开的应用程序(通过我桌面上的快捷方式)来意识到这一点。Raspberry Pi 社区的成员也遇到了这个问题,但无济于事:https ://www.raspberrypi.org/forums/viewtopic.php?f=32&t=132054 ://www.raspberrypi.org/forums/viewtopic.php?f=32&t=132054 。
这是我的简单main.kv文件供参考:
<Controller>:
ActionBar:
pos_hint: {'top':1}
ActionView:
use_separator: True
ActionPrevious:
title: 'Action Bar'
with_previous: False
on_release: root.action_close()
BoxLayout:
Label:
text: "Test"
还有我的main.python文件:
import kivy
from kivy.uix.floatlayout import FloatLayout
from kivy.app import App
class Controller(FloatLayout):
def action_close(self):
App.get_running_app().stop()
class ControllerApp(App):
def build(self):
self.load_kv('main.kv')
return Controller()
ControllerApp().run()
以及我用于 Kivy的config.ini文件中的相关片段:
[kivy]
keyboard_repeat_delay = 300
keyboard_repeat_rate = 30
log_dir = logs
log_enable = 1
log_level = info
log_name = kivy_%y-%m-%d_%_.txt
window_icon =
keyboard_mode = dock
keyboard_layout = qwerty
desktop = 1
exit_on_escape = 1
pause_on_minimize = 0
config_version = 14
[graphics]
display = -1
fullscreen = auto
height = 600
left = 0
maxfps = 60
multisamples = 2
position = auto
rotation = 0
show_cursor = 1
top = 0
width = 800
resizable = 1
borderless = 0
window_state = visible
minimum_width = 0
minimum_height = 0
[input]
mouse = mouse
mtdev_%(name)s = probesysfs,provider=mtdev
hid_%(name)s = probesysfs,provider=hidinput
...
我尝试使用配置文件中的值,最值得注意的是window_state
,fullscreen
和keyboard_mode
选项,但没有成功。Kivy 配置信息可以在这里找到。谷歌上的各种搜索,在这里什么都没有出现,任何帮助将不胜感激。