foto endern per tastendruck python?

1 Antwort

Du kannst das Beispiel aus diesem Artikel als Grundlage nehmen. Statt einem Text ordnest du dem Label allerdings ein Bild (image-Parameter) zu.


yuhuh 
Beitragsersteller
 09.04.2022, 21:25

tut mir leid, aber dann wirt mir kein Bild angezeigt, mein jetziger Code:

from tkinter import *

win= Tk()

win.geometry("500x500")

def key_press(e):
   label.config(image=PhotoImage("open.jpg"))

def key_released(e):
   label.config(image=PhotoImage("closed.jpg"))
label= Label(win, image="")

win.bind('<KeyPress>',key_press)
win.bind('<KeyRelease>',key_released )
win.mainloop()

es gibt auch keine Fehler Meldung.

regex9  09.04.2022, 23:04
@yuhuh

Das Label muss im Fenster platziert werden. Für die Anzeige von JPEG-Bildern brauchst du PIL:

from tkinter import *
from PIL import Image, ImageTk

def key_press(e):
  global image
  image = ImageTk.PhotoImage(Image.open("1.jpg"))
  label.config(image=image)

def key_released(e):
  global image
  image = ImageTk.PhotoImage(Image.open("2.jpg"))
  label.config(image=image)

win = Tk()
win.geometry("500x500")

image = None
label = Label(win, image=image)
label.pack()

win.bind('<KeyPress>', key_press)
win.bind('<KeyRelease>', key_released)
win.mainloop()

Das aktuelle Bild speichere ich hier in einer globalen Variable, um zu verhindern, dass das Objekt vom Garbage Collector einfach wieder abgeräumt wird.

yuhuh 
Beitragsersteller
 10.04.2022, 15:39
@regex9

vielen dank!

hat super funktioniert!