2015-03-05 17 views
5

Sto sviluppando un'applicazione Qt con Python e PySide. L'applicazione gira su Ubuntu Linux; la macchina ha un touch screen.Come far attivare a QInputDialog la tastiera virtuale?

La tastiera virtuale 'bordo' è utilizzato per consentire all'utente di inserire testo. Di default è nascosto. Una volta che un campo di testo in un'applicazione come gedit ottiene lo stato attivo attiva automaticamente la tastiera virtuale e viene visualizzato.

Tuttavia, nella mia applicazione Ho un QInputDialog che chiedono l'utente un certo input. Nel mio caso, la messa a fuoco del campo di testo di QInputDialog non attiva la visualizzazione della tastiera virtuale. Come posso ottenerlo?

risposta

3

Come per la README espone bordo di un servizio DBUS per consentire alle applicazioni per commutare la visibilità di.

probabilmente si vuole fare questo con l'aggiunta di qualcosa di simile prima e dopo la chiamata getText. Per esempio.

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) 

È anche possibile utilizzare il metodo ToggleVisible per entrambe le chiamate.

Questo è specifico per bordo, per la proiezione generale da qualsiasi soluzione tastiera virtuale è o integrato in QT già utilizzando i motori Ibus esistenti o metodo di input malitt o è fatto implementando una QPlatformInputContext come dimostrato here e here o utilizzando metodo simile che utilizza DBUS o qualche altra soluzione di trasferimento di messaggi (socket TCP, ecc.) per commutare lo stato di quella particolare tastiera virtuale.

+0

Grazie per i suggerimenti. Controllerò il metodo domani. – Stefan

+0

Funziona per me :-). Grazie! – Stefan

+0

Non funziona su RHEL qualche suggerimento o correzione ?? –

Problemi correlati