Autostart von Tkinter - Möglich oder nicht?

  • Hallo,

    ich bin am verzweifeln.
    Ich habe mein Pythonprogramm mit einem GUI von Tkinter. Alles läuft super nur den Autostart bekomme ich nicht hin.
    Über rc.local habe ich schon ein paar mal gelesen dass es nicht gehen soll. Andere haben es hinbekommen.

    Ich habe hier alles mögliche ausprobiert. Mit Pfad von Python und ohne. Leider ohne Erfolg.
    Die Datei habe ich mit chmod ausführbar gemacht.
    Also sollte es doch gehen!?

    Ich habe es auch mit Chronjob versucht. (soll angeblich bei Tkinter gehen)
    Aber auch hier funktioniert die Variante mit Python Pfad und ohne nicht. Hier eine Variante:

    Code
    @reboot sudo /usr/bin/python /home/pi/Desktop/Meinprogramm.py &

    Was muss ich anders machen?
    Tobias

  • Hallo Tobias,


    Was muss ich anders machen?

    Code
    @reboot (sleep 30 && sudo /usr/bin/python /home/pi/Desktop/Meinprogramm.py) &

    mal so als Grundidee... Es muss eben alles hochgeladen und gestartet, aktiviert und erreichbar sein, was zum Zeitpunkt @reboot noch gänzlich unbeleckt ist.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Moin Düsentrieb,
    SRI, an Andreas und digiart.

    auf Grund deiner langen Zugehörigkeit im Forum, solltest du wissen, das doppelte Anfragen nicht schneller gehen. Eher das Gegenteil ist der Fall.

    Was alle wissen wollen. Was macht das Programm bzw. was braucht das Programm um richtig zu laufen??

    Netzwerk, Displayinit usw.
    Schön wäre es wenn du einfach schreibst was dein Programm macht.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin,

    Bernd666: du hast natürlich Recht. Ich habe meine Frage schon zum zeiten Mal gestellt. Aber auch nur weil ich einfach nicht weiter komme und alle Hilfen bisher nicht geholfen haben
    Andreas: Danke erst mal für deine Unterstützung aber leider hat es auch nicht geholfen.

    O.K. hier noch mal mehr Details zum Programm:
    Es handelt sich um eine Steuerung für einen Brutautomat.
    Ein kleines Pythonprogramm misst über Ds1820 1-Wire Sensoren die Temperatur und schaltet bei Bedarf über GPio Lüfter und Heizung ein.
    Die Messwerte werden regelmäßig an eine MySql Datenbank übertragen.
    Zur Anzeige der Zustände ist ein 7" Toutchdisplay angeschlossen. Tkinter ist für die Oberfläche mit an Board.

  • Code
    @reboot sudo /usr/bin/python /home/pi/Desktop/Meinprogramm.py &

    Was muss ich anders machen?
    Tobias

    Es gibt mehrere Möglichkeiten einen Cronjob zu starten. Wenn Dein Script als root laufen soll dann schreibst Du in die
    /etc/crontab
    also z.B mit :

    sudo nano /etc/crontab

    Hier dann Deinen Job anfügen:

    @reboot root /usr/bin/python /home/pi/Desktop/Meinprogramm.py

    Du hattest sudo als User gesetzt. Sudo benötigt aber ein Passwort, deshalb hier gleich root setzen.
    Das & wird hier nicht benötigt.

    Bei Problemen schaust du in die /var/log/syslog. Cron schreibt hier seine Fehlermeldungen rein.

    Gruß Jan

  • Hallo Jan,
    Danke für deine schnelle Antwort.

    Ich habe bisher immer nur die crontab -e genutzt. Das ist scheinbar nicht /etc/crontab.
    Ich habe es jetzt dort reingeschrieben, aber leider ohne Erfolg.
    Einen Fehler im log bekomme ich auch nicht angezeigt.
    Das ist wie verhext.
    Der Raspberry fährt ohne Anmelden als "pi" hoch.
    Das Pythonprogramm läuft auch nicht im Hintergrund.
    Ist es möglich dass crontab "ausgeschaltet" ist?

    Tobias

  • Es waere unwahrscheinlich, das dein System keinen cron-daemon irgendeiner Art hat.

    Das Grundproblem ist aber ein anderes: du versuchst (befluegelt durch hier oft gegebene Antworten) das Falsche Tool zur Loesung deines Problems zu verwenden. cron ist fuer wiederkehrende, kurzzeitige Hintergrundprozesse gedacht. Nicht als Launch-System mit Abhaengikeits-Kontrolle.

    Es gibt viele Wege zum Ziel, der wahrscheinlich einfachste ist die Autostart-Funktion deines Desktops selbst: https://wiki.lxde.org/en/Autostart

  • Ja. Im Verzcheichnis "~/.config/autostart/" legst du eine Datei namens "MeinTollesProgramm.desktop" an, mit dem in den Link gezeigten Aufbau. Das sollte dann beim Desktopstart gefunden & ausgefuehrt werden. Um zu testen, ob die .desktop-Datei funktioniert, kannst du sie auch mal annavigieren durch den Dateimanager unter LXDE & Doppelclicken, das muss funktionieren.

  • Für Tkinter wird normalerweise X benötigt, also zumindest ein Window-Manager. Fälschlicherweise raten daher viele dass X11 installiert sein müsste, also quasi eine Desktop Oberfläche... Aber es reicht wie gesagt ein Window-Manager wie zum Beispiel 'openbox' von LXDE.
    Fälschlicherweise raten daher viele dass ein vollständiges X/X11 installiert sein müsste, also quasi eine Desktop Oberfläche wie LXDE oder PIXEL... Aber es reicht wie gesagt ein Window-Manager wie zum Beispiel 'openbox' von LXDE.

    Das wiederum erfordert aber dass dein Script erst dann startet wenn dieser Window-Manager bereits gestartet wurde. Deshalb hat dir __deets__ auch geraten dein Script in den Autostart von LXDE zu packen, denn das wird erst dann ausgeführt wenn LXDE bereits gestartet wurde und somit auch der Window-Manager. Siehe dazu auch FAQ => Nützliche Links / Linksammlung => Autosart => LXDE

    Aber wie gesagt benötigst du keine vollständige Desktop Oberfläche wie LXDE oder PIXEL.. Zumal sich das dann ja auch auf dem Bildschirm darstellt. Es reicht bereits ein Window-Manager. Wenn du nur dieses eine Fenster anzeigen willst würde sogar ein leichtgewichtiger Window-Manager reichen der maximal nur ein Fenster erlaubt und explizit für Kiosk-Modes optimiert wurde: matchbox
    Der Autostart von Openbox wird übrigens über die Datei ~/pi/.config/openbox/autostart geregelt - in diesem Fall für den Benutzer "pi".

    Siehe dazu By The Way auch: FAQ => Nützliche Links / Linksammlung => Kiosk
    (anstatt eines Browsers kannst du dann selbstverständlich auch deine GUI starten)

  • Entschuldige, meigrafd, aber ich glaube, Du wirfst da die Begrifflichkeiten etwas durcheinander: X und X11 sind in diesem Kontext synonym und bezeichnen das zugrundeliegende Framework, das quasi die Infrastruktur für graphische Darstellungen sowie Ein- und Ausgabe (Maus) zur Verfügung stellt. X11 muß also in der Tat installiert sein. Ein Window Manager hingegen stellt Funktionen für den Umfang mit Fenstern zur Verfügung (bewegen, vergrößern, verkleinern, minimieren etc.). Das ist zwar in aller Regel praktisch, unbedingt notwendig ist es aber nicht - man kann X-Programme - bzw, insbesondere ein einzelnes X-Programm - auch durchaus ohne gestarteten Fenstermanager ausführen. Eine vollständige Desktop-Oberfläche (LXDE, KDE, Gnome etc.) ist, wie Du richtig schreibst, erst recht nicht notwendig.

    Siehe auch https://de.wikipedia.org/wiki/X_Window_System

  • ...und inwiefern werfe ich die Begrifflichkeiten X und X11 durcheinander ? :-/ Lies mal die ersten beiden Absätze des von Dir geposteten Links und erklär mir dann den ersten Satz deines Beitrag#11 noch mal :fies:


    Mit X oder X11 kürze ich etwas ab da auch ich faul bin aber dem TE auch Schlagwörter nennen möchte. Die Begriffe X und X11 beziffern das selbe Konstrukt.
    X11 bzw X wird unter anderem benötigt sobald etwas nicht selbstständig auf Framebuffer zugreifen kann, da es den "Standardbaukasten" von X verwendet bzw darauf zugreift. Für Tkinter benötigt man diesen "Standardbaukasten". Für pygame aber zum Beispiel nicht.

  • In der ursprünglichen Fassung hattest Du geschrieben

    Zitat


    Für Tkinter wird normalerweise X benötigt, also zumindest ein Window-Manager. Fälschlicherweise raten daher viele dass X11 installiert sein müsste, also quasi eine Desktop Oberfläche

    Das lese zumindest ich so, als wäre es möglich, X zu installieren ohne X11 zu installieren und als sei X11 mehr als "reines" X, nämlich eine "Desktop Oberfläche". Da, wie Du selbst schreibst, X und X11 das "selbe Konstrukt beziffern", ist beides falsch.

    Ansonsten denke ich, wir sind uns einig, daß zum Starten eines Tkinter-Programms ein X-Server gestartet sein muß. Alles weitere wie vollständige Desktopumgebung oder Window Manager sind optional.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!