gpt4 book ai didi

Python PyGtk 虚拟键盘支持 at-spi

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:35 35 4
gpt4 key购买 nike

我编写了一个 PyGtk 应用程序来控制 Pi3 上的某些特定功能。这个全屏 GUI(通过 2.8"TFT 触摸屏)是用户与设备交互的全部内容。没有鼠标、键盘、SSH、VNC 等可用。因为需要从用户那里获取输入需要实现一种方法,让虚拟键盘在文本框获得焦点时出现,然后在焦点丢失时消失。我研究了许多虚拟键盘,唯一提供此功能并支持 Gtk 的是 Florence。但我当输入文本框获得/失去焦点时无法使其自动显示/隐藏。

Florence 依赖 at-spi 框架来获取事件通知。根据“佛罗伦萨模式”( http://florence.sourceforge.net/english/usage.html )

You should make sure your applications support at-spi if you intend to use Florence in hidden mode.

The auto hide mode requires accessibility to be activated, which means the at-spi registry daemon is running and applications are using it.

此外,根据常见问题解答 ( http://florence.sourceforge.net/english/how-to.html ),需要设置环境变量。

export GTK_MODULES=gail:atk-bridge

所以我将 Florence 配置为自动隐藏模式,下载 at-spi,运行注册表守护程序并设置环境变量,但没有骰子。当 GUI 上的文本框获得焦点时,键盘不会出现。

我想我有两个问题。首先,我与佛罗伦萨没有任何关系,因此如果有其他解决方案,我愿意实现它。但其次,我不清楚的一件事是如何使 PyGtk 应用程序“支持 at-spi”。除了环境变量之外,如何确保我的应用程序使用 at-spi?在这一点上,我没有明确的文档。

最佳答案

我还没有树莓派 (RPi),所以这个答案可能不适用于 RPi。

它确实可以在 Linux 上运行,因此您可能想在 RPi 上测试它。

我安装了 OnBoard(另一个支持 DBus 的虚拟键盘)。

确保您的 OnBoard 正在运行,但隐藏了虚拟键盘。

以下代码将控制虚拟键盘的可见性:

import dbus

# initialize session bus, you can put the following lines into
# your initialization block, or something or use a class
sess_bus = dbus.SessionBus()

# get the object proxy for the virtual keyboard,
# won't work if OnBoard is not already running
kbd = sess_buss.get_object('org.onboard.Onboard',
'/org/onboard/Onboard/Keyboard')


# display virtual keyboard
kbd.Show()

# hide virtual keyboard
kbd.Hide()

关于Python PyGtk 虚拟键盘支持 at-spi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471097/

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