Florence Tastatur mit Python öffnen

  • Hallo zusammen


    Ich habe die Florence Tastatur installiert und sie funktioniert auch ohne Probleme, wenn ich sie über die Himbeere links öffne.

    Nun möchte ich sie mit einem Tkinter Button öffnen. Der erste Versuch scheiterte schon Mal an den Rechten. Mit sudo chmod -v 777 florence.desktop habe ich mir sicherheitshalber alle Rechte gegeben. Nun kommt beim Aufruf eine Fehlermeldung, mit der ich nicht viel anfangen kann. Kann mir da evtl. jemand von euch helfen? Der Aufruf-Code der Tastatur sieht so aus (dies ist nur ein Teil des gesamten Codes):


    Wie ihr seht, möchte ich damit Youtube und die virtuelle Tastatur öffnen, damit man dann den Titel bei Youtube eintippen kann. Das Öffnen von Youtube habe ich aber jetzt ausgeklammert, dass mir das keinen Fehler gibt.

    Die Fehlermeldung sieht folgendermassen aus:


    Code
    /usr/share/applications/florence.desktop: 1: /usr/share/applications/florence.desktop: [Desktop: not found
    /usr/share/applications/florence.desktop: 3: /usr/share/applications/florence.desktop: Virtual: not found
    /usr/share/applications/florence.desktop: 4: /usr/share/applications/florence.desktop: Name[fr]=Clavier: not found
    /usr/share/applications/florence.desktop: 5: /usr/share/applications/florence.desktop: Name[it]=TastieraVirtuale: not found
    /usr/share/applications/florence.desktop: 6: /usr/share/applications/florence.desktop: Name[ru]=Виртуальная: not found
    /usr/share/applications/florence.desktop: 7: /usr/share/applications/florence.desktop: Virtual: not found
    /usr/share/applications/florence.desktop: 8: /usr/share/applications/florence.desktop: Comment[fr]=Clavier: not found
    /usr/share/applications/florence.desktop: 9: /usr/share/applications/florence.desktop: Comment[it]=TastieraVirtuale: not found
    /usr/share/applications/florence.desktop: 10: /usr/share/applications/florence.desktop: Comment[ru]=Виртуальная: not found
    /usr/share/applications/florence.desktop: 15: /usr/share/applications/florence.desktop: Accessibility: not found

    Hat er nun die Tastatur nicht gefunden oder was? Ich habe den Pfad kontrolliert und der stimmt. Oder kann ich die Tastatur nicht direkt so starten?


    LG Bern93

  • Hallo dbv

    Danke für die Antwort.

    Ich habe es nun mit subprocess probiert. Ich glaube so ist richtig oder? Weiter oben im Code wird der subrocess importiert.

    Code
     def youtube(self):
            subprocess.run('/home/pi/.local/share/applications/florence.desktop')

    Ich erhalte aber immer noch folenden Fehler:


    wie wird denn die Tastatur da drin gestartet? genau so startest du sie auch in deinem Script.

    Leider verstehe ich den Inhalt dieser Datei nicht komplett. Wo wird denn in dieser Datei etwas gestartet? Nachfolgend ist der Inhalt:

    LG Bern

  • den vollständigen Pfad bekommst mit which florence raus

    Super danke das hat super funktioniert :)


    jetzt erhalte ich beim Öffnen der Tastatur die Warnung:

    Code
    Florence version 0.6.3
    Florence version 0.6.3
    WARNING: Notification failed

    und wenn ich die Tastatur wieder schliesse kommt dann zusätzlich das:

    Ist das ein Problem?


    Während dem die Tastatur geöffnet ist, ist die ganze Benutzeroberfläche, die ich mit Tkinter programmiert habe inaktiv, das heisst ich kann nichts bedienen. Ist das Normal?


    LG Bern

    Edited once, last by Bern93 ().

    • Official Post

    Während dem die Tastatur geöffnet ist, ist die ganze Benutzeroberfläche, die ich mit Tkinter programmiert habe inaktiv, das heisst ich kann nichts bedienen. Ist das Normal?

    Ja, er wartet dann bis zum Ende des Befehls - also wenn du es terminierst. Quick und dirty Lösung. hänge ein & an deinen Aufrufbefehl ran. Dann sollte deine Oberfläche wieder reagieren. Warnungen würde ich erstmal ignorieren und den Rest beim schliessen auch ;)

  • Hallo dbv

    Danke vielmals.

    hänge ein & an deinen Aufrufbefehl ran.

    Leider stehe ich komplett auf dem Schlauch. Wo genau muss ich das & anhängen? Ich habe diverses versucht und es gab mir immer ein SyntaxError: invalid syntax aus.


    LG Bern

  • mit welchem Befehl startest du denn jetzt florence?

    So rufe ich die Tastatur auf:

    Code
        def youtube(self):
            webbrowser.open('http://www.youtube.com')
            subprocess.run('/usr/bin/florence')

    Und hier ist es dasselbe:

    Code
        def radio(self):
            subprocess.run ('/usr/local/lib/newtron-v3/newtron_radio.py',timeout=10)

    Beide werden über Tkinter-Buttons gestartet


    LG Bern

  • Das bringt nichts. Das & ist ein Shell Zeichen, und die ist hier nicht im Spiel. Stattdessen subprocess.Popen verwenden. Da wird nicht auf das Ende des Prozesses gewartet, was man hier ja nicht will. Das tut aber run.

  • run ist das neue, geilere call, mit checks und output und haste nicht gesehen. Aber eben nur synchron.