2015-03-05 14 views
5

Ich entwickle eine Qt-Anwendung mit Python und PySide. Die Anwendung läuft auf Ubuntu Linux; Die Maschine hat einen Touchscreen.Wie wird ein QInputDialog ausgelöst, damit die virtuelle Tastatur angezeigt wird?

Die virtuelle Tastatur 'onboard' wird verwendet, um dem Benutzer die Eingabe von Text zu ermöglichen. Standardmäßig ist es ausgeblendet. Sobald ein Textfeld in einer Anwendung wie gedit den Fokus bekommt, löst es automatisch die virtuelle Tastatur aus und es erscheint.

In meiner Anwendung habe ich jedoch einen QInputDialog, der den Benutzer nach einigen Eingaben fragt. In meinem Fall löst die Fokussierung des Textfelds von QInputDialog nicht aus, dass die virtuelle Tastatur angezeigt wird. Wie kann ich das erreichen?

Antwort

3

Gemäß der README onboard exponiert einen DBUS-Dienst, damit Anwendungen seine Sichtbarkeit wechseln können.

Wahrscheinlich möchten Sie dies tun, indem Sie etwas vor und nach dem getText-Aufruf hinzufügen. Z.B.

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) 

Sie können auch die ToggleVisible-Methode für beide Aufrufe verwenden.

Dies gilt speziell für onboard, für die allgemeine Darstellung auf jeder virtuellen Tastatur-Lösung wird entweder integriert in QT bereits die bestehenden ibus oder malitt Eingabemethode Motoren mit oder wird durch die Implementierung eines QPlatformInputContext getan als here und here oder durch demonstriert mit eine ähnliche Methode, die entweder DBUS oder eine andere Lösung zur Nachrichtenübergabe verwendet (TCP-Sockets usw.), um den Status für diese bestimmte virtuelle Tastatur umzuschalten.

+0

Danke für die Zeiger. Ich werde diese Methode morgen überprüfen. – Stefan

+0

Es funktioniert für mich :-). Vielen Dank! – Stefan

+0

Es funktioniert nicht auf RHEL irgendwelche Vorschläge oder zu beheben? –