gpt4 book ai didi

raspbian - 具有自动隐藏功能的 Pi 虚拟键盘

转载 作者:行者123 更新时间:2023-12-04 15:41:57 28 4
gpt4 key购买 nike

我正在使用 PyGObject 创建一个 UI,它将在连接到运行 Raspbian 的 Pi 3 的 7"官方 RPi 触摸屏上运行。作为此界面的一部分,UI 需要一个屏幕键盘。我知道有两个虚拟键盘Pi 的程序:火柴盒键盘和佛罗伦萨。

问题是我想尽可能地模仿智能手机键盘的行为,但不知道该怎么做。我想做的类似于this ,除了我希望键盘自动隐藏并位于主窗口的顶部。如何才能做到这一点?

编辑:我已经尝试了这两个程序,但无法弄清楚如何实现这一点。我在火柴盒键盘中找不到自动弹出选项,有些人报告说它具有此功能( here ),其他人则说不( here )。我假设一些 Linux 桌面管理器支持此功能,但不支持 Pi 上的 LXDE。

Florence 似乎很有希望,因为它有一个自动隐藏选项,听起来它会做我想做的事,但是当我选择它时,它似乎不起作用。

最佳答案

我终于想出了如何将自动隐藏行为添加到火柴盒键盘。首先我读到了--daemon命令行参数 here听起来它会起作用,但是当我尝试它时,自动隐藏功能仅适用于部分而非全部文本条目。

相同的 README 文件说:

You can embed matchbox-keyboard into other applications with toolkits that support the XEMBED protocol ( GTK2 for example ).

See examples/matchbox-keyboard-gtk-embed.c for how its done.



我以前知道这一点,但认为它不适用于 PyGObject,直到我发现它确实有效。将这些行添加到我的代码中有效:
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()))

我还创建了 Gtk.Entry 的一个简单子(monad)类当文本输入获得或失去焦点时自动隐藏键盘:
class TextEntry(Gtk.Entry):
def __init__(self, window):
Gtk.Entry.__init__(self)
self.keyboard = window.keyboard

self.connect("focus-in-event", self.on_focus_in)
self.connect("focus-out-event", self.on_focus_out)

def on_focus_in(self, event, data):
self.keyboard.show()

def on_focus_out(self, event, data):
self.keyboard.hide()

关于raspbian - 具有自动隐藏功能的 Pi 虚拟键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35956532/

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