Python 如何使对话框触发虚拟键盘显示?

Python 如何使对话框触发虚拟键盘显示?,python,qt,touch,pyside,Python,Qt,Touch,Pyside,我正在用Python和PySide开发一个Qt应用程序。 应用程序在Ubuntu Linux上运行;这台机器有一个触摸屏 虚拟键盘“板载”用于让用户输入文本。默认情况下,它是隐藏的。一旦像gedit这样的应用程序中的文本字段获得焦点,它就会自动触发虚拟键盘并显示出来 然而,在我的应用程序中,我有一个请求用户输入的对话框。在我的例子中,聚焦对话框的文本字段不会触发虚拟键盘的显示。我怎样才能做到这一点呢?根据Board公开的DBUS服务,允许应用程序切换其可见性 您可能希望通过在getText调用之

我正在用Python和PySide开发一个Qt应用程序。 应用程序在Ubuntu Linux上运行;这台机器有一个触摸屏

虚拟键盘“板载”用于让用户输入文本。默认情况下,它是隐藏的。一旦像gedit这样的应用程序中的文本字段获得焦点,它就会自动触发虚拟键盘并显示出来

然而,在我的应用程序中,我有一个请求用户输入的对话框。在我的例子中,聚焦对话框的文本字段不会触发虚拟键盘的显示。我怎样才能做到这一点呢?

根据Board公开的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来实现,或者通过使用DBUS或其他一些消息传递解决方案来使用类似方法(TCP套接字等)以切换特定虚拟键盘的状态