2015-03-05 24 views
5

Zajmuję się tworzeniem aplikacji Qt z Python i PySide. Aplikacja działa na systemie Ubuntu Linux; maszyna ma ekran dotykowy.Jak sprawić, aby klawiatura QInputDialog uruchomiła wirtualną klawiaturę?

Wirtualna klawiatura "na pokładzie" służy do wprowadzania tekstu przez użytkownika. Domyślnie jest ukryty. Gdy pole tekstowe w aplikacji takiej jak gedit uzyskuje fokus, automatycznie uruchamia wirtualną klawiaturę i pojawia się.

Jednak w mojej aplikacji mam QInputDialog, który prosi użytkownika o pewne dane wejściowe. W moim przypadku skupienie pola tekstowego QInputDialog nie powoduje wyświetlenia wirtualnej klawiatury. Jak mogę to osiągnąć?

Odpowiedz

3

Jak na README pokładzie naraża usługę DBUS aby umożliwić aplikacjom na przełączanie jest jego widoczność.

Prawdopodobnie chcesz to zrobić, dodając coś takiego jak przed i po wywołaniu getText. Na przykład.

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) 

Można również użyć metody ToggleVisible dla obu połączeń.

ten jest specyficzny dla pokładzie, dla ogółu pojawiać się jakiegokolwiek rozwiązania wirtualnej klawiatury jest albo zintegrowana QT już przy użyciu silników istniejących Ibus lub metoda wejścia malitt lub odbywa się poprzez realizację QPlatformInputContext jak wykazano here i here lub za pomocą podobna metoda albo przy użyciu DBUS albo innego rozwiązania przekazywania komunikatów (gniazda TCP, itp.) w celu przełączenia statusu dla danej klawiatury wirtualnej.

+0

Dzięki za wskazówki. Sprawdzę tę metodę jutro. – Stefan

+0

To działa dla mnie :-). Dzięki! – Stefan

+0

Nie działa na RHEL żadnych sugestii lub naprawić? –