如何让 QInputDialog 触发虚拟键盘显示?
How to make a QInputDialog trigger the virtual keyboard to show up?
我正在使用 Python 和 PySide 开发 Qt 应用程序。
该应用程序在 Ubuntu Linux 上运行;机器有触摸屏。
虚拟键盘'onboard'用于让用户输入文本。默认情况下它是隐藏的。一旦 gedit 等应用程序中的文本字段获得焦点,它就会自动触发虚拟键盘并显示出来。
但是,在我的应用程序中,我有一个 QInputDialog,它要求用户进行一些输入。在我的例子中,聚焦 QInputDialog 的文本字段不会触发虚拟键盘显示。我怎样才能做到这一点?
根据 README 板载公开 DBUS 服务以允许应用程序切换其可见性。
您可能想通过在 getText 调用之前和之后添加类似内容来实现此目的。例如
msg = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard'
'org.onboard.Onboard.Keyboard.Show')
QtDBus.QDBusConnection.sessionBus().send(msg)
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog',
'Enter your name:')
msg2 = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard'
'org.onboard.Onboard.Keyboard.Hide')
QtDBus.QDBusConnection.sessionBus().send(msg2)
您也可以对这两个调用使用 ToggleVisible 方法。
这是特定于板载的,因为任何虚拟键盘解决方案的一般显示要么集成到已经使用现有 ibus 或 malitt 输入法引擎的 QT 中,要么通过实现 QPlatformInputContext 来完成,如所演示的那样 here and here或者通过使用 DBUS 或其他一些消息传递解决方案(TCP 套接字等)的类似方法来切换该特定虚拟键盘的状态。
我正在使用 Python 和 PySide 开发 Qt 应用程序。 该应用程序在 Ubuntu Linux 上运行;机器有触摸屏。
虚拟键盘'onboard'用于让用户输入文本。默认情况下它是隐藏的。一旦 gedit 等应用程序中的文本字段获得焦点,它就会自动触发虚拟键盘并显示出来。
但是,在我的应用程序中,我有一个 QInputDialog,它要求用户进行一些输入。在我的例子中,聚焦 QInputDialog 的文本字段不会触发虚拟键盘显示。我怎样才能做到这一点?
根据 README 板载公开 DBUS 服务以允许应用程序切换其可见性。
您可能想通过在 getText 调用之前和之后添加类似内容来实现此目的。例如
msg = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard'
'org.onboard.Onboard.Keyboard.Show')
QtDBus.QDBusConnection.sessionBus().send(msg)
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog',
'Enter your name:')
msg2 = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard'
'org.onboard.Onboard.Keyboard.Hide')
QtDBus.QDBusConnection.sessionBus().send(msg2)
您也可以对这两个调用使用 ToggleVisible 方法。
这是特定于板载的,因为任何虚拟键盘解决方案的一般显示要么集成到已经使用现有 ibus 或 malitt 输入法引擎的 QT 中,要么通过实现 QPlatformInputContext 来完成,如所演示的那样 here and here或者通过使用 DBUS 或其他一些消息传递解决方案(TCP 套接字等)的类似方法来切换该特定虚拟键盘的状态。