我正在使用PyGObject创建一个将在7"官方RPi触摸屏连接到运行Raspbian的Pi 3。作为此界面的一部分,UI将需要屏幕键盘。我知道Pi的两个虚拟键盘程序:Matchbox Keyboard和Florence。
问题在于我想尽可能模仿智能手机键盘的行为,但不知道该怎么做。我想要做的是类似于this,除了我希望键盘自动隐藏并位于主窗口之上。怎么办呢?
编辑:我已经尝试了这两个程序,并且无法弄清楚如何实现这一目标。我无法在Matchbox键盘中找到自动弹出选项,有些人报告它具有此功能(here),其他人则拒绝(here)。我假设某些Linux桌面管理器支持此功能,但不支持Pi上的LXDE。佛罗伦萨似乎很有前途,因为它有一个自动隐藏选项听起来像我想做的那样,但是当我选择它时似乎没有用。
答案 0 :(得分:2)
我终于想出了如何向Matchbox Keyboard添加自动隐藏行为。首先我读到了CenterOverAssociatedObject
命令行参数here,这听起来像是可行的,但是当我尝试它时,自动隐藏功能仅适用于部分文本条目,而不是所有文本条目。
相同的README文件说:
您可以使用工具包将matchbox-keyboard嵌入到其他应用程序中 支持XEMBED协议(例如GTK2)。
请参阅examples/matchbox-keyboard-gtk-embed.c了解其完成情况。
我之前知道这一点,但我认为它不适用于PyGObject,直到我发现它确实如此。将这些行添加到我的代码中:
PopupWindowAction
我还创建了一个简单的--daemon
子类,当文本条目获得或失去焦点时会自动隐藏键盘:
p = subprocess.Popen(["matchbox-keyboard", "--xid"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
keyboard = Gtk.Socket()
window.add(keyboard)
keyboard.add_id(int(p.stdout.readline()))