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:
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 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()
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?
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()
Merci pour vos réponses
Partager