2016-06-29 25 views
2

Ich möchte meinen Code auf Raspberry Pi, die einen Touchscreen angeschlossen hat, laufen lassen. Die GUI wird mit Tkinter erstellt und ich möchte die Bildschirmtastatur des Systems öffnen, wenn der Eintrag fokussiert ist. Hier ist mein aktueller Code:Aktualisieren Eintrag Widget mit Text von der Bildschirmtastatur in tkinter

Zur Bindung des Eintrag Widget mit focusIn Ereignisse:

self.usernameEntry.bind('<FocusIn>', self.FocusLogin) 

Für die Bildschirmtastatur im pi installiert Aufruf:

def FocusLogin(self,event): 
     os.system('florence') 

Mein Problem ist, dass alles, was ich eingeben Durch die florence-Tastatur füllt es das Eingabe-Widget nicht automatisch. Erst nachdem ich die Tastatur geschlossen habe, sehe ich tatsächlich, was ich eingegeben habe. Ich habe die matchbox-Tastatur ausprobiert, aber sie friert nur die gesamte Benutzeroberfläche ein. Florence scheint besser zu sein, aber es aktualisiert nicht das Eingangsfeld, wie ich erwähnt habe. Ich möchte, dass die Benutzeroberfläche automatisch die Tasten anzeigt, die ich im Eingabefeld gedrückt habe.

Antwort

0

Für jemanden nach der Antwort suchend, fand ich zwei Möglichkeiten, dies zu lösen:

Zuerst Verwendung subprocess.Popen auf separate Threads von UI und der Tastatur zu erstellen. Dies funktioniert gut auf onboard-Tastatur, aber florence lags

Zweite Methode ist, florence im Hintergrund vor dem Öffnen der App zu starten. Verwenden Sie dann

, um Florence für die Ereignisse, die Sie binden möchten, auszublenden oder anzuzeigen.