Hallo,
ich habe folgendes Problem. Ich lasse mit mit dem Befehl .show() ein Bild darstellen. Dieses Bild wird nun verändert und soll wieder dargestellt werden. Wenn ich nun aber wieder mit den show() Befehl arbeite wird immer wieder ein neues Fenster geöffnet. Kann man dies verhindern? Gibt es also einen Befehl, der ein dargestelltes Bild aktualisiert? Oder gibt es alternativ die Möglichkeit das alte Fenster zu schließen, ehe man mit .show() ein neues öffnet?
Besten Dank schon einmal im Voraus an alle Mitdenker
dargesteltes Bild erneuern
Danke für die schnelle Antwort:
Es geht um ein kleines Programm, dass mehrere Bilder addieren soll. Hier ist der Code:
Es geht um ein kleines Programm, dass mehrere Bilder addieren soll. Hier ist der Code:
Code: Alles auswählen
from PIL import Image
import os
import numpy
os.chdir(".../Downloads/Testbilder/")
image1 = Image.open("DSC_1.jpg")
image1.show()
image2 = Image.open("DSC_2.jpg")
n_img1 = numpy.asarray(image1)
n_img2 = numpy.asarray(image2)
Stack = (n_img1 +n_img2)
Bild = Image.fromarray(Stack.astype(numpy.uint8))
Bild.show()
Das ist schlicht nicht der geeignete Mechanismus. Wie es in der Doku zu show selbst steht: "mainly intended for debugging purposes". https://pillow.readthedocs.io/en/3.1.x/ ... Image.show
Denn du kannst nicht angeben, unter welchen Bedingungen das Programm weiter fortgesetzt werden soll.
Zur Darstellung solltest du daher ein anderes Framework benutzen. ZB tkinter (kommt mit Python mit), oder 3rd-Party Pakete wie pygame oder OpenCV - je nach Anwendung.
Denn du kannst nicht angeben, unter welchen Bedingungen das Programm weiter fortgesetzt werden soll.
Zur Darstellung solltest du daher ein anderes Framework benutzen. ZB tkinter (kommt mit Python mit), oder 3rd-Party Pakete wie pygame oder OpenCV - je nach Anwendung.
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@ThoNel: `os.chdir()` ist eine Funktion von der man eher die Finger lassen sollte. Das ändert globalen Zustand, skaliert schlecht, um wenn man nicht aufpasst, macht man irgendwann Sachen mit relativen Pfaden in der Annahme das Arbeitsverzeichnis befände sich ganz woanders. Schau Dir mal das `pathlib`-Modul an.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
from pathlib import Path
import tkinter as tk
import numpy as np
from PIL import Image, ImageTk
IMAGES_PATH = Path(".../Downloads/Testbilder/")
class MainFrame(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.image = Image.open(str(IMAGES_PATH / "DSC_1.jpg"))
self.tk_image = ImageTk.PhotoImage(self.image)
self.label = tk.Label(self, image=self.tk_image)
self.label.pack()
self.button = tk.Button(self, text="Add", command=self.add_image)
self.button.pack()
def add_image(self):
self.tk_image = ImageTk.PhotoImage(
Image.fromarray(
(
np.asarray(self.image)
+ np.asarray(Image.open(str(IMAGES_PATH / "DSC_2.jpg")))
).astype(np.uint8)
)
)
self.label["image"] = self.tk_image
self.button["state"] = tk.DISABLED
def main():
root = tk.Tk()
main_frame = MainFrame(root)
main_frame.pack()
root.mainloop()
if __name__ == "__main__":
main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari