[python] cherche aide pour interface graphique
benchoux
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un petit probleme, je n'arrive pas a trouver de solution :
Je voudrait créer comme un tableau avec les images de personnages, le probleme est que je ne sais pas vraiment comment faire pour mettre dans chaque canneva une image. Dans ce code l'image se repète 24 fois, j'aimerai qu'a la place, chaque canvas correspondrait a 1 image différente :)
si quelqu'un aurai des idées se serai super sympa
EDIT: Correction de la coloration syntaxique.
J'ai un petit probleme, je n'arrive pas a trouver de solution :
Je voudrait créer comme un tableau avec les images de personnages, le probleme est que je ne sais pas vraiment comment faire pour mettre dans chaque canneva une image. Dans ce code l'image se repète 24 fois, j'aimerai qu'a la place, chaque canvas correspondrait a 1 image différente :)
fenetre = Tk() fenetre.geometry("800x500") photo = PhotoImage(file = 'python.gif') photo1=PhotoImage(file='boy.gif') photo2=....... #etc pour mes 24 photos for i in range(4): for j in range(5): canvas = Canvas(fenetre, width =130, height =130, bg ='white') canvas.create_image(65, 65, image =photo) canvas.grid(row=i, column=j) fenetre.mainloop()
si quelqu'un aurai des idées se serai super sympa
EDIT: Correction de la coloration syntaxique.
A voir également:
- [python] cherche aide pour interface graphique
- Changer carte graphique - Guide
- Citizen code python avis - Accueil - Outils
- Graphique sparkline - Guide
- Graphique camembert excel - Guide
- Common interface 5v only - Forum TV & Vidéo
2 réponses
Salut,
La même image s'affiche à chaque fois car tu créés tes Canvas avec en paramètre de create_image, image = photo et photo regarde ce que c'est : photo = PhotoImage(file = 'python.gif'). Il s'agit effectivement de la même photo. Il faut que tu fasses varier le paramètre que tu passes à create_image dans image pour ne pas avoir la même chose.
Par exemple, tu pourrais stocker dans une liste photo, l'ensemble de toutes les photos que tu souhaites implémenter.
Après il te reste plus qu'à remplacer photo du paramètre image de create_image par photo[cpt] où cpt est un compteur qui s'incrémente jusqu'à 23 (car le dernier élément de la liste est le numéro 23 et non 24).
La même image s'affiche à chaque fois car tu créés tes Canvas avec en paramètre de create_image, image = photo et photo regarde ce que c'est : photo = PhotoImage(file = 'python.gif'). Il s'agit effectivement de la même photo. Il faut que tu fasses varier le paramètre que tu passes à create_image dans image pour ne pas avoir la même chose.
Par exemple, tu pourrais stocker dans une liste photo, l'ensemble de toutes les photos que tu souhaites implémenter.
photo1 = PhotoImage(file = 'python.gif') photo2 = PhotoImage(file = 'boy.gif') photo3 = # ... etc pour tes 24 photos photo = [photo1,photo2,photo3,...,photo24]
Après il te reste plus qu'à remplacer photo du paramètre image de create_image par photo[cpt] où cpt est un compteur qui s'incrémente jusqu'à 23 (car le dernier élément de la liste est le numéro 23 et non 24).
d'accord merci beaucoup pour ta réponse. Par contre pour cpt je n'est pas vraiment comprit, je doit remplacer cpt par quelque chose ?
Je sais je ne suis pas doué du tout, mais ca ne fonctionne pas. peut etre que je n'ai pas ecrit la bonne chose, j'ai essayé de comprendre ce que c'était d'incrémenter mais j'ai encore un peu de mal.
Voila mon code, j'ai définit cpt :
Voila mon code, j'ai définit cpt :
photo0 = PhotoImage(file = 'belle.gif')
photo1 = PhotoImage(file = 'elsa.gif')
photo2 = PhotoImage(file = 'john.gif')
photo3 = PhotoImage(file = 'eric.gif')
photo4 = PhotoImage(file = 'peterpan.gif')
photo5 = PhotoImage(file = 'tarzan.gif')
photo=[photo0,photo1,photo2,photo3,photo4,photo5]
cpt=0
for i in range(4):
for j in range(6):
canvas = Canvas(fenetre, width =130, height =130, bg ='white')
canvas.create_image(65, 65, image =photo[cpt])
canvas.grid(row=0, column=0)
Oui, c'est bien. Le problème c'est que ton compteur cpt vaut toujours 0. A aucun moment tu ne le fait changer de valeur. L'incrémentation d'une variable (ici cpt) c'est augmenter de 1 quand un tour de boucle est réalisé. Un exemple basique :
Exécute ce code pour comprendre l'incrémentation. Ici, il te manque juste l'étape : augmenter de 1 quand un tour de boucle est réalisé.
cpt = 0 while cpt<20: print(cpt) cpt = cpt + 1 # ou cpt += 1
Exécute ce code pour comprendre l'incrémentation. Ici, il te manque juste l'étape : augmenter de 1 quand un tour de boucle est réalisé.