Je viens de Java et je veux juste créer une interface graphique avec des images, mais les images changent dynamiquement et je ne sais pas de quelle image ce sera... mais ça ne marche pas , je ne peux que créer une image et je ne peux pas la modifier en dehors de root.mainloop() et recevoir des tonnes de messages d'erreur... Est-ce que quelqu'un sait comment changer dynamiquement l'image ? Merci beaucoup
import tkinter as tk from PIL import Image, ImageTk def add_image_to_gui(root, image_path): # Load image image = Image.open(image_path) # Convert image to Tkinter-compatible format tk_image = ImageTk.PhotoImage(image) # Create label and display image image_label = tk.Label(root, image=tk_image) image_label.image = tk_image # Keep reference to the image to prevent it from being garbage collected image_label.pack() def create_gui(window_title, window_size, image_path): # Create Tkinter window root = tk.Tk() root.title(window_title) root.geometry(window_size) # Add image add_image_to_gui(root, image_path) # Start Tkinter event loop root.mainloop() return root if __name__ == "__main__": window_title = "Simple GUI" window_size = "1495x1020" image_path = "Bilder/Hauptfenster.png" root = create_gui(window_title, window_size, image_path)
chatgpt, recherche google mais personne ne semble avoir le même problème que moi...
Pour changer d'image après un certain temps, vous devez appeler un type de fonction pour la changer. Étant donné que cette interface graphique n'a pas de boutons, le moyen le plus simple est de planifier les futures mises à jour en utilisant tkinter.tk().after
et de laisser cette fonction modifier l'image de l'étiquette.
Voici un exemple de code montrant comment y parvenir avec des modifications minimes :
EDIT : Mise à jour des informations supplémentaires dans les commentaires, une autre fonction fournira le chemin du fichier et l'appel à function_that_yields_new_image_paths
sera remplacé.
import tkinter as tk from PIL import Image, ImageTk def add_image_to_gui(root): image_label = tk.Label(root) image_label.pack() return image_label def update_image(root, image_label): image = Image.open(function_that_yields_new_image_paths()) tk_image = ImageTk.PhotoImage(image) image_label.configure(image=tk_image) image_label.image = tk_image root.after(1000, update_image, root, image_label) def function_that_yields_new_image_paths(): import numpy image_path1 = "a.png" image_path2 = "b.png" return numpy.random.choice((image_path1, image_path2)) def create_gui(window_title, window_size): # Create Tkinter window root = tk.Tk() root.title(window_title) root.geometry(window_size) # Add image image_label = add_image_to_gui(root) root.after(1, update_image, root, image_label) # Start Tkinter event loop root.mainloop() return root if __name__ == "__main__": window_title = "Simple GUI" window_size = "1495x1020" root = create_gui(window_title, window_size)
Si vous avez des questions, n'hésitez pas à me le faire savoir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!