Seite 1 von 1

Tkinter aus ssh starten

Verfasst: Donnerstag 27. August 2015, 17:10
von tsaG
Hi!

Ich habe auf meinem Raspberry Pi ein externes Display angeschlossen, über SPI. Dieses wird über den Framebuffer angesprochen, ansonsten läuf der Pi Headless.
Nun würde ich gerne darauf meine Tkinter Anwendung starten. Leider funktioniert dies noch nicht...

Ich bekomme den folgenden Fehler

Code: Alles auswählen

  File "PiCas2.py", line 7, in <module>
    top = Tkinter.Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1712, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
Ich habe in meinen Code bereits

Code: Alles auswählen

os.environ["SDL_FBDEV"] = "/dev/fb1"
eingefügt, jedoch tritt der fehler trotzdem noch auf :(

Re: Tkinter aus ssh starten

Verfasst: Donnerstag 27. August 2015, 17:17
von BlackJack
@tsaG: Tk braucht einen X-Server. Umgebungsvariablen für die Simple Directmedia Layer (SDL) Bibliothek sind Tk egal.

Re: Tkinter aus ssh starten

Verfasst: Donnerstag 27. August 2015, 17:49
von tsaG
Auf meinem kleinen Display läuft ja ein X-Server (mit FRAMEBUFFER=/dev/fb1 startx
gestartet) . Ist es ansonsten möglich das ich in dem Python script X starte und dann tkinter starte?

Re: Tkinter aus ssh starten

Verfasst: Donnerstag 27. August 2015, 18:04
von BlackJack
@tsaG: Also wenn der X-Server läuft dann schau mal was passiert wenn Du in der Shell ein ``export DISPLAY=:0`` ausführst und dann Dein Programm startest.

Re: Tkinter aus ssh starten

Verfasst: Donnerstag 27. August 2015, 18:45
von tsaG
Hm, der selbe fehler, bzw. er lautet jetzt

"couldn't connect to display ":0" bei 0.0 ist es dasselbe

EDIT: Anscheinend funktioniert es! Die Session auf meinem Display ist anscheinend jedoch leider nicht 0.0.

Starte ich jedoch eine VNC session, lese dann mit "echo $DISPLAY" die Werte aus, gebe sie dann in meine andere Console ein funktioniert es!

Nun muss ich jedoch nur noch einen weg finden, möglichst einfach und automatisch diesen Wert für mein SPI Display zu finden und dann darauf mein programm zu starten ...