Bonjour,

Je suis toujours en pleine expérimentation pour faire un diaporama. J'avais déjà ouvert un poste à ce sujet (https://www.developpez.net/forums/d1...itaire-django/) car je voulais faire avec Django. J'ai décider de changer et orienté sur une interface graphique. J'ai trouvé ce poste concernant un diaporama (https://www.developpez.net/forums/d9...ire-diaporama/). J'ai récris de cette manière le bout de code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from tkinter import *
from glob import glob
from PIL import Image, ImageTk
#import pdb ; pdb.set_trace()
 
j = 0
window = Tk()
lbl = Label(window)
lbl.pack()
 
slides = []
for i in glob('./slides/*.JPG'):
    image = Image.open(i)
    photo = ImageTk.PhotoImage(image)
    slides.append(photo)
 
def slideshow():
    global j
    if j == len(slides):
        j = 0
    try:
        lbl.config(image = slides[j])
        j += 1
    except:
        exit
    window.after(2000, slideshow)
 
slideshow()
window.mainloop()
La ça fonctionne mais je voudrais mettre la partie de chargement des photos dans une fonction. Voici ma modification:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from tkinter import *
from glob import glob
from PIL import Image, ImageTk
#import pdb ; pdb.set_trace()
 
j = 0
window = Tk()
lbl = Label(window)
lbl.pack()
 
def loadSlides():
    slides = []
    for i in glob('./slides/*.JPG'):
        image = Image.open(i)
        photo = ImageTk.PhotoImage(image)
        slides.append(photo)
    return slides
 
def slideshow():
    slides = loadSlides()
    global j
    if j == len(slides):
        j = 0
    try:
        lbl.config(image = slides[j])
        j += 1
    except:
        exit
    window.after(2000, slideshow)
 
slideshow()
window.mainloop()
Maintenant j'ai plus que la fenêtre tkinter qui s'ouvre mais je n'ai pas d'image qui s'affiche. Quand je fais avec pdb, dans ma variable slides de la fonction slideshow, j'ai les images et quand j'arrive sur lbl.conf, je peux charger l'image dans la fenêtre. Mais il se bloque après sur windows.after. Pourquoi? Et il y a aussi quelqu'un qui arrive me dire pourquoi dans window.after, l'appel de la fonction et sans les parentaise?

Merci pour vos réponses