Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2206 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  besoin d'aide pour un programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

besoin d'aide pour un programme

n°2298427
carotizian​a
débutante en programmation
Posté le 30-03-2017 à 21:31:42  profilanswer
 

Bonjour à tous, voilà une amie et moi devons faire un programme scientifique. Mais nous avons un énorme problème malgré de nombreuses recherches. On veut créer un jeu sur les 20 acides aminées en mettant plusieurs images de ces acides et en insérant juste à côté un choix multiple ( un genre de check liste) qui en cliquant dessus nous montrera si la réponse correspond à la photo ( système de vérification).
Nous avons fait ce code en tkinter sur python 3 ( ci dessous) qui je vous l'accorde est déjà trop long mais surtout les images ne s'appliquent pas , le programme montre juste des cases de couleur.. Pouvez vous, nous aider à raccourcir ce code et surtout nous permettre de mettre plusieurs images?  Merci  :)  
 
 
 
 
from tkinter import *
 
fen1 = Tk()
 
# création d'un widget 'Canvas' contenant une image bitmap :
can1 = Canvas(fen1, width =160, height =160, bg ='white')
photo = PhotoImage(file ='ala.gif')
item = can1.create_image(80, 80, image =photo)
can2 = Canvas(fen1, width =160, height =160, bg ='black')
photo = PhotoImage(file ='leu.gif')
item = can2.create_image(100, 100, image =photo)
can3 = Canvas(fen1, width =160, height =160, bg ='blue')
photo = PhotoImage(file ='gly.gif')
item = can3.create_image(200, 200, image =photo)
can4 = Canvas(fen1, width =160, height =160, bg ='green')
photo = PhotoImage(file ='gly.gif')
item = can4.create_image(200, 200, image =photo)
can5 = Canvas(fen1, width =160, height =160, bg ='gold')
photo = PhotoImage(file ='gly.gif')
item = can5.create_image(200, 200, image =photo)
can6 = Canvas(fen1, width =160, height =160, bg ='magenta')
photo = PhotoImage(file ='gly.gif')
item = can6.create_image(200, 200, image =photo)
can7 = Canvas(fen1, width =160, height =160, bg ='#234567')
photo = PhotoImage(file ='gly.gif')
item = can7.create_image(200, 200, image =photo)
can8 = Canvas(fen1, width =160, height =160, bg ='#098765')
photo = PhotoImage(file ='gly.gif')
item = can8.create_image(200, 200, image =photo)
can9 = Canvas(fen1, width =160, height =160, bg ='#453627')
photo = PhotoImage(file ='gly.gif')
item = can9.create_image(200, 200, image =photo)
can10 = Canvas(fen1, width =160, height =160, bg ='#102938')
photo = PhotoImage(file ='gly.gif')
item = can10.create_image(200, 200, image =photo)
can11 = Canvas(fen1, width =160, height =160, bg ='#928374')
photo = PhotoImage(file ='gly.gif')
item = can11.create_image(200, 200, image =photo)
can12 = Canvas(fen1, width =160, height =160, bg ='#610384')
photo = PhotoImage(file ='gly.gif')
item = can12.create_image(200, 200, image =photo)
can13 = Canvas(fen1, width =160, height =160, bg ='#777777')
photo = PhotoImage(file ='gly.gif')
item = can13.create_image(200, 200, image =photo)
can14 = Canvas(fen1, width =160, height =160, bg ='#001234')
photo = PhotoImage(file ='gly.gif')
item = can14.create_image(200, 200, image =photo)
can15 = Canvas(fen1, width =160, height =160, bg ='#619247')
photo = PhotoImage(file ='gly.gif')
item = can15.create_image(200, 200, image =photo)
can16 = Canvas(fen1, width =160, height =160, bg ='#716354')
photo = PhotoImage(file ='gly.gif')
item = can16.create_image(200, 200, image =photo)
can17 = Canvas(fen1, width =160, height =160, bg ='#840294')
photo = PhotoImage(file ='gly.gif')
item = can17.create_image(200, 200, image =photo)
can18 = Canvas(fen1, width =160, height =160, bg ='#386334')
photo = PhotoImage(file ='gly.gif')
item = can18.create_image(200, 200, image =photo)
can19 = Canvas(fen1, width =160, height =160, bg ='#046384')
photo = PhotoImage(file ='gly.gif')
item = can19.create_image(200, 200, image =photo)
can20 = Canvas(fen1, width =160, height =160, bg ='#105384')
photo = PhotoImage(file ='gly.gif')
item = can20.create_image(200, 200, image =photo)
# Mise en page à l'aide de la méthode 'grid' :
can1.grid(row =1, column =1, rowspan =3, padx =[0,100], pady =5)
can2.grid(row =10, column =1, rowspan =3, padx =[0,100], pady =5)
can3.grid(row =20, column =1, rowspan =3, padx =[0,100], pady =5)
can4.grid(row =30, column =1, rowspan =3, padx =[0,100], pady =5)
can5.grid(row =40, column =1, rowspan =3, padx =[0,100], pady =5)
can6.grid(row =1, column =2, rowspan =3, padx =[100,200], pady =5)
can7.grid(row =10, column =2, rowspan =3, padx =[100,200], pady =5)
can8.grid(row =20, column =2, rowspan =3, padx =[100,200], pady =5)
can9.grid(row =30, column =2, rowspan =3, padx =[100,200], pady =5)
can10.grid(row =40, column =2, rowspan =3, padx =[100,200], pady =5)
can11.grid(row =1, column =3, rowspan =3, padx =[0,200], pady =5)
can12.grid(row =10, column =3, rowspan =3, padx =[0,200], pady =5)
can13.grid(row =20, column =3, rowspan =3, padx =[0,200], pady =5)
can14.grid(row =30, column =3, rowspan =3, padx =[0,200], pady =5)
can15.grid(row =40, column =3, rowspan =3, padx =[0,200], pady =5)
can16.grid(row =1, column =4, rowspan =3, padx =[0,200], pady =5)
can17.grid(row =10, column =4, rowspan =3, padx =[0,200], pady =5)
can18.grid(row =20, column =4, rowspan =3, padx =[0,200], pady =5)
can19.grid(row =30, column =4, rowspan =3, padx =[0,200], pady =5)
can20.grid(row =40, column =4, rowspan =3, padx =[0,200], pady =5)
 
# démarrage :
fen1.mainloop()

mood
Publicité
Posté le 30-03-2017 à 21:31:42  profilanswer
 

n°2298439
h3bus
Troll Inside
Posté le 31-03-2017 à 09:33:39  profilanswer
 

Utilise les balise [ code ] [ /code ] (sans les espaces) pour que ton code soit plus lisible.
 
Le problème ici c'est que tes image sont "garbage collected". Sans entrer dans les détails, python a l'impression que tu n'as plus besoin des images et les supprime de la mémoire.
 
Pour éviter cela tu peux renommer ta variable "photo" en photo1, photo2 ... etc
 
Je reviendrai plus tard sur la longueur du code et manière de coder cela plus propre.


---------------
sheep++
n°2298445
h3bus
Troll Inside
Posté le 31-03-2017 à 09:56:57  profilanswer
 

Pour la longueur du code, le soucis qui se pose c'est que tu mélange des données au code.
 
Le mieux est de définir les données à part, puis de les utiliser pour construire ta fenêtre.
C'est assez facile dans ton cas car le code est très répétitif.
En plus court ça donne:

Code :
  1. from Tkinter import *
  2.  
  3. # Layout informations
  4. imagesLayout = [
  5.        {'file':'redface.gif',  'background':'white',   'grid' : (1, 1), 'padx':[0,100]},
  6.        {'file':'biggrin.gif',  'background':'black',   'grid' : (10,1), 'padx':[0,100]},
  7.        {'file':'gzk.gif',      'background':'blue',    'grid' : (20,1), 'padx':[0,100]},
  8.        {'file':'gzk.gif',      'background':'green',   'grid' : (30,1), 'padx':[0,100]},
  9.        {'file':'gzk.gif',      'background':'green',   'grid' : (40,1), 'padx':[0,100]},
  10.        {'file':'redface.gif',  'background':'white',   'grid' : (1, 2), 'padx':[100,200]},
  11.        {'file':'biggrin.gif',  'background':'black',   'grid' : (10,2), 'padx':[100,200]},
  12.        {'file':'gzk.gif',      'background':'blue',    'grid' : (20,2), 'padx':[100,200]},
  13.        {'file':'gzk.gif',      'background':'green',   'grid' : (30,2), 'padx':[100,200]},
  14.        {'file':'gzk.gif',      'background':'green',   'grid' : (40,2), 'padx':[100,200]},
  15.    ]
  16.  
  17. # Store data to prevent garbage collection
  18. canvas_Refs = []
  19. photos_Refs = []
  20.  
  21. fen1 = Tk()
  22.  
  23. # Create canvas
  24. for image in imagesLayout:
  25.    canvas = Canvas(fen1, width=160, height=160, bg=image['background'])
  26.    photo  = PhotoImage(file=image['file'])
  27.    canvas.create_image(80, 80, anchor=CENTER, image=photo)
  28.    canvas.grid(row=image['grid'][0], column=image['grid'][1], rowspan=3, padx=image['padx'], pady=5)
  29.  
  30.    #store references to prevent garbage collection
  31.    canvas_Refs.append(canvas)
  32.    photos_Refs.append(photo)
  33.  
  34. # Start :
  35. fen1.mainloop()


Message édité par h3bus le 31-03-2017 à 09:59:04

---------------
sheep++
n°2298518
carotizian​a
débutante en programmation
Posté le 31-03-2017 à 17:03:19  profilanswer
 

Ok merci bien , je vais voir ce que ça donne :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  besoin d'aide pour un programme

 

Sujets relatifs
Utilisation de tableaux - programme débutant (besoin d'aide !)Besoin d'aide pour programme sous Java's Cool !
besoin d'aide pour un programme java (urgent =x )Besoin d'aide (résolution d'un probleme sur un programme fini )
Besoin d'aide pour mon programme javascriptBesoin d'aide: Programme sous MikroC
besoin d'aide sur programme SVP !Besoin d'aide pour creer un programme
besoin d'aide pour completer un programmeBesoin d'aide pour créer un programme
Plus de sujets relatifs à : besoin d'aide pour un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR