Python GUI in Autostart laden

  • Hallo liebe Community,


    wie kriege ich es wohl hin, eine Python-Programm mit GUI (z.B. MeineGUI.py) so in eine Autostart einzubauen, dass, wenn der PI eingeschaltet wirdm direkt jenes Programm MeineGUI.py gestartet wird (in dieser grafischen Oberfläche.. "X")?
    Vielen Dank für Eure Hilfe!
    Grüße,
    Jeff


  • Diese "autostart" Frage wird hier nämlich beinahe jeden 2.Tag gestellt!


    Diese ewigen autostart Threads sind lästig, aber ich glaube hier liegt es etwas anders. So wie ich den TE verstehe möchte er nach dem Booten sofort ein GUI auf dem Bildschirm sehen welches von seinem Script erzeugt wird.


    Den Weg den ich sehe ist
    1) autologin in die Pi -> http://elinux.org/RPi_Debian_Auto_Login
    2) Autostart eine User application die X benutzt (geht auch irgendwie ...)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

  • Wenn er in den "Automatisches Starten von Scripte / Programme ( Autostart )" Thread über die Forumsuche nach "autostart" rein schaut und den vorletzten Post auf der 1.Seite ließt, findet er 3 Möglichkeiten für den Autostart einer LXDE Basierten Application ...

  • Vielleicht sollte ich den Thread mal lesen :blush:

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

  • Hallo zusammen,
    zunächst danke für die Hilfe. Ich werde das heute abend mal testen. Dass ich die Foren-Huilfe nicht genutzt hätte ist allerdings so nicht ganz richtig. - Gut vielleicht nicht gründlich genug. Da ich ein ziemlicher Newbie bin, im Bezug auf Linux, kann ich aber nicht leugnen. Diese ganze Thematik umd ie Autostart verwirrt mich nach wie vor - vermutlich, weil es eben nicht nur einen Weg gibt, sondern mehrere. Früher bei DOS, hat man den Krams in die Autoexec.bat eingetragen. Bei windows reicht´s wenn man es in den Startup einträgt. Und bei Linux - rc.local, init-script, etc.
    Nehmt´s mir also bitte nicht krumm, dass ich das zum X.ten Male angesprochen habe - ich gelobe Besserung! ;)
    [hr]
    Achso, ja - also der Plan ist schon der, so wie es User "Framp" geschrieben hat:
    Nach dem Power-On des PIs soll nach dem Booten direkt das Python Programm mit der GUI gestartet werden.

    Edited once, last by Jeff ().

  • Dennoch kommt es auf deinen individuellen Umstand drauf an

    • Wie heißt bei dir der Benutzer der sich anmelden und das Python Script verwenden soll?
    • Meldet sich bei dir der Benutzer automatisch an?
    • Meinst du mit GUI wirklich die Desktop-Umgebung oder eher doch die Konsole? (das is nen gewaltiger Unterschied)
    • Welche Desktop-Umgebung verwendest du überhaupt?


    Das weißt also nur du, demnach können wir dir kein "fix und fertig hau drauf" Paket schnüren



    PS: Auch unter Windoof gibt es mehrere Wege fürs "autostart", allerdings scheinst Du halt nur 2 zu kennen...

  • Ah verstehe.
    Also zu Deinen Fragen:
    * Der user heißt "pi"
    * noch meldet sich kein user automatisch an, aber vermutlich wird das entweder user "pi" sein, dann per autologin oder aber ich werde das PW entfernen, so dass ich dann nciht mehr in der Konsole hängenbleibe. mal sehen
    * Also mit der GUI meine ich tatsächlich eine grafische Oberfläche. Um es noch konkreter zu sagen: ich habe mir dieses 2.8" Watterott-Grafikdisplay gekauft und mache gerade die ersten Gehversuche mit dem Erstellen einer GUI unter Python. Der Plan sieht vor, dass also diese selbsterstellte GUI mit einigen "Buttons" nach dem Booten im Vollbild angezeigt werden - auf jenem Grafikdisplay. Im finalen Projekt will ich dann keine Maus/Tastatur mehr dran haben, weshalb mir die Konsole dann nciht mehr bringt. Zu steuern sollen dann die Funktionen NUR noch über das Touchdisplay sein. Daher gehe ich davon aus, dass ich das LXDE (startx) als Grundlage brauche, und darin soll dann automatisch mein pyhton-script gestartet werden, welches dann die GUI darstellt und die Befehle entgegen nimmt. Als Grundlage habe ich hierfür derzeit ein Wheezy-OS als "fertiges" image auf der SDCard installiert.
    * also wenn es da unterschiede gibt in der Version wheezy vs. debian muss ich nochmal schauen. Bzw. ich habe mir folgendes Image besorgt: 2014-01-07-wheezy-raspbian-2014-02-03-fbtft-RPi-Display.zip (von: http://tronnes.org/fbtft/download.html). Und ich rede von jenem Display: http://www.watterott.com/de/RPi-Display


  • * Also mit der GUI meine ich tatsächlich eine grafische Oberfläche. Um es noch konkreter zu sagen: ich habe mir dieses 2.8" Watterott-Grafikdisplay gekauft und mache gerade die ersten Gehversuche mit dem Erstellen einer GUI unter Python. Der Plan sieht vor, dass also diese selbsterstellte GUI mit einigen "Buttons" nach dem Booten im Vollbild angezeigt werden - auf jenem Grafikdisplay. Im finalen Projekt will ich dann keine Maus/Tastatur mehr dran haben, weshalb mir die Konsole dann nciht mehr bringt. Zu steuern sollen dann die Funktionen NUR noch über das Touchdisplay sein. Daher gehe ich davon aus, dass ich das LXDE (startx) als Grundlage brauche, und darin soll dann automatisch mein pyhton-script gestartet werden, welches dann die GUI darstellt und die Befehle entgegen nimmt.


    Aha! Also eine GUI über das 2,8" Touchscreen Display
    Da verhält sich das anders, dafür brauchst du kein LXDE :D


    Dein Monitor/TV, der an HDMI angeschlossen ist, verwendet /dev/fb0 aber das 2,8" Display wird über /dev/fb1 angesprochen - die wären also erstmal unabhängig voneinander.. Man könnte dann zwar daher gehen und mithilfe von fbcp das Bild von fb0 auf fb1 zu "kopieren" aber wenn ich dich richtig verstehe möchtest du das garnicht?


    Nun, wenn du dein Python Script so starten möchtest das es automatisch nach hochfahren des PI's gestartet haben möchtest gäbe es 3 Möglichkeiten:

    • Ein Eintrag in /etc/rc.local zum Beispiel das die Datei dann so aussieht:


    • Ein Crontabeintrag in entweder /etc/crontab sodass die Datei dann wie folgt aussähe:


      Oder in die Benutzer-Crontab des pi Benutzers mithilfe des Befehls crontab -e eintragen (mehr zur Crontab kannst du >hier< nachlesen)

      Code
      @reboot  /path/to/pythonGUI.py


    • Oder du modifizierst das System so das sich der pi Benutzer automatisch anmeldet, so wie es >hier< beschrieben ist, mit dem Unterschied das du u.U. nicht root sondern pi automatisch anmelden läßt. Und dann über das Benutzer-Profil dein Script starten läßt (das wird dann halt erst ausgeführt wenn sich der Benutzer anmeldet).
      Das wird >hier< beschrieben, bezüglich ~/.bashrc sowie ~/.profile




    PS: Guck dir dazu vllt auch mal den folgenden Post an: http://www.forum-raspberrypi.d…splays?pid=62204#pid62204

  • WOW - danke für die ausführliche Anleitung :)
    Wie gesagt: werde das heute abend mal testen. Was mich irritiert - aber was ich offen gesagt aber auch noch gar nicht vesucht habe - ist, dass es möglich sein soll, das python-script direkt aus der Konsole zu starten. Also für "normale" python-scripte geht das - klar. Aber eine GUI in der Konsole starten? Ich meine, ich habe ja noch nicht mal eine Maus, in der Konsole... :-/ Aber gut. Vielleicht bringt das Python ja irgendwie mit. Mein Verständnis war bisher, dass ich dieses LXDE quasi als Framework brauche um dann darin Fenster/Buttons usw. darstellen zu können.
    Im Moment bin ich noch bei der Arbeit. Aber ich werde das wie gesagt heute abend mal testen und dann hier berichten, wie es funktioniert hat.
    [hr]
    Nachtrag: dass mit dem switchen von HDMI und touchscreen mittels /dev/fb0 habe ich schon getestet. Aber wie Du schon richtig vermutet hattest, brauche ich das eigentlich nur zum debuggen. Im Endeffekt soll der pi ausschließlich sein eigenes Display (2.8") befeuern.

    Edited once, last by Jeff ().

  • Doch du hast eine Maus, nativen in der Konsole also direkt am PI anmelden ohne SSH, damit kannst du Text markieren und wieder ausgeben lassen :D


    Du startest das Python Script in der Konsole, aber die Ausgabe erfolgt über framebuffer - du müßtest dann halt pygame nutzen


    Guck dir dazu mal folgenden Beitrag an: http://www.forum-raspberrypi.d…sensor?pid=67580#pid67580