L'interface graphique Python tkinter change dynamiquement les images

WBOY
Libérer: 2024-02-09 14:45:04
avant
1140 Les gens l'ont consulté

Python tkinter GUI动态改变图像

Contenu de la question

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)
Copier après la connexion

chatgpt, recherche google mais personne ne semble avoir le même problème que moi...


Réponse correcte


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)
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!