GUI mit Tkinter und Pillow

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo erstmal,

    habe nachdem ich einiges mit meinem RPi angestellt habe, als letztes ein 2 zeiliges Display angeschlossen und benutzt. Aber wie das nun mal so ist, reicht das einfache Display nicht mehr aus und ich brauche eine vollständige GUI.

    Da ich alle meine Programme bis jetzt in Python geschrieben habe, wollte ich auch die GUI damit schreiben, damit alles gut zusammenpasst. Also hab ich mich in Tkinter eingelesen und auch schon erste Erfolge gehabt (Buttons, Labels etc). Allerdings bekomme ich es nicht hin ein Bild mit Pillow anzeigen zu lassen. Pillow ist die Weiterentwicklung von PIL für Python 3+. Zunächst einmal mein Code:

    Dabei bekomme ich den Fehler "_tkinter.TclError: image "..." doesn't exist" in der Zeile 26 wo dem Label das Bild zugewiesen wird. Dann habe ich mich erkundigt und rausgefunden, dass ich zuerst das Bild nach dem Öffnen in PIL in ein Tkinterobjekt umwandeln muss. Dabei wurde auf ImageTk verwiesen welches ich aber nicht importieren kann, da es nicht installiert ist, bei PIL aber dabei sein sollte.

    Nun meine Frage, ich benötige PIL um verschiedene Formate zu öffnen sowie um die Bilder zu verkleinern etc. Mit Tkinter alleine also nicht machbar. Wie kann ich ImageTk nachinstallieren bzw. den Error beheben?

    Anbei eine kleine Zeichnung wie ich mir mein GUI vorstelle.

  • Mit Tkinter Fragen kann ich leider nicht helfen, da ich - wenn überhaupt - nur mit PyQt4 arbeite. Aber PIL hat das ImageTK Modul, also:

    Python
    from PIL import Image, ImageTk
    
    
    image = Image.open("lenna.jpg")
    photo = ImageTk.PhotoImage(image)

    ggf. hilft dir das weiter

    Edit:

    Code
    image = Image.open("bg.gif")
    photo = ImageTk.PhotoImage(image)
    #img = PhotoImage(bg_image)
    bg_label = Label(fenster, image=photo)
    bg_label.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=W+E+N+S, padx=10, pady=10)
    bg_label.image = photo
  • Nachdem ich mein Pi neu aufsetzen musste :wallbash: , hab ich nun PIL mit "sudo pip3.2 install Pillow" installieren können. Soweit funktioniert auch alles, allerdings bräuchte ich ein wenig Hilfe beim Erstellen meines GUI. Im Grunde weiss ich was ich wo hin haben will, kann es aber nicht umsetzen. Dafür fehlt mir die Erfahrung :D

    Als Erstes würde es mir helfen wenn mir jemand die pack() , place() und grid() Funktionen näher erklären könnte, damit ich ein GUI wie oben angehängt basteln könnte.

    Danke im Vorraus!

  • wenn du pack verwendest legt python alles von sich aus nacheinander "gepackt" hin.
    place kann ich dir nicht so genau sagen im moment..

    grid... wie der name sagt.. ordnet alles in einem festgelegten raster an... du gibst dabei die Position und ausrichtung im gitter an...

    Code
    name.grid(row=y, colum=x, sticky= N+E+S+W) #Reihe y , spalte x , zentriert

    ... vorher musst du dann name definiert haben ob das ein button entry oder was auch immer ist...

    probiere dich mal aus.. ich setze mir gerade auch wieder nen pi auf und werde dann und werde dann auch ne kleine gui mit tkinter erstellen... wenn du den code hier postest werde ich mich melden.. wenn nicht schreib mich direkt an..

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

Jetzt mitmachen!

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