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

  FORUM HardWare.fr
  Programmation
  Python

  application operationel amelioree devient non fonctionnel

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

application operationel amelioree devient non fonctionnel

n°2318753
atlass2182​18
Posté le 06-08-2018 à 20:31:52  profilanswer
 

Bonjour;
 
A titre d'information je suis débutant en ce qui concerne la programmation avec le langage "PYTHON"
 
je viens de créer une application simplifiée pour le moment  avec les widgets (Frame. Menu) qui fonctionnement correctement comme je le souhaite avec un nombre de lignes très élevé. Pour cela, j'ai opte a le perfectionner pour réduire son volume en modifiant la fonction (faire_apparaitre).
 
En exécutant le programme pas de bug mentionne mais le changement de couleur pour les frames en cliquant sur les sous-menu de l'onglet (ILS) ne fait pas changer la couleur du background de chaque frame comme ce que se passe pour l'application volumineuse
 
voici le code de l'application volumineuse (qui fonctionne a perfection) :
 

Code :
  1. #coding:utf-8
  2.  
  3. from tkinter import *
  4.  
  5. ############################################
  6. # fonction pour faire basculer l'affichage #
  7. # des frames : ILS_35L , ILS_35R , ILS_17R #
  8. ############################################
  9. def faire_apparaitre(frame):
  10.     global fen
  11.        
  12.     #pour faire apparaitre la frame (GP_35R) 
  13.     if frame!=loc_35L and frame!=loc_17R and frame!=loc_35R and frame!=gp_17R  and frame != gp_35L :
  14.         loc_35L.grid_forget()
  15.         loc_35R.grid_forget()
  16.         loc_17R.grid_forget()
  17.         gp_35L.grid_forget()     
  18.         gp_17R.grid_forget()       
  19.         gp_35R.grid()
  20.        
  21.     #pour faire apparaitre la frame (gp_35L) 
  22.     elif frame!=loc_35L and frame!=loc_17R and frame!=loc_35R and frame!=gp_17R  and frame != gp_35R :
  23.         loc_35L.grid_forget()
  24.         loc_35R.grid_forget()
  25.         loc_17R.grid_forget()
  26.         gp_35R.grid_forget()     
  27.         gp_17R.grid_forget()     
  28.         gp_35L.grid()
  29.        
  30.     #pour faire apparaitre la frame (gp_17R) 
  31.     elif frame!=loc_35L and frame!=loc_17R and frame!=loc_35R and frame!=gp_35L  and frame != gp_35R :
  32.         loc_35L.grid_forget()
  33.         loc_35R.grid_forget()
  34.         loc_17R.grid_forget()
  35.         gp_35L.grid_forget()     
  36.         gp_35R.grid_forget()
  37.         gp_17R.grid()
  38.        
  39.     #pour faire apparaitre la frame (loc_35L)
  40.     elif frame!=gp_35L and frame!=loc_17R and frame!=loc_35R and frame!=gp_17R  and frame != gp_35R :     
  41.         loc_35R.grid_forget()
  42.         loc_17R.grid_forget()
  43.         gp_17R.grid_forget()
  44.         gp_35L.grid_forget()     
  45.         gp_35R.grid_forget()         
  46.         loc_35L.grid()
  47.    
  48.     #pour faire apparaitre la frame (LOC_35R)
  49.     elif frame!=gp_35L and frame!=loc_17R and frame!=loc_35L and frame!=gp_17R  and frame != gp_35R :
  50.          
  51.         loc_35L.grid_forget()
  52.         loc_17R.grid_forget()
  53.         gp_17R.grid_forget()
  54.         gp_35L.grid_forget()     
  55.         gp_35R.grid_forget()     
  56.         loc_35R.grid()
  57.        
  58.     #pour faire apparaitre la frame (loc_17R)         
  59.     else:           
  60.         loc_35L.grid_forget()
  61.         loc_35R.grid_forget()
  62.         gp_17R.grid_forget()
  63.         gp_35L.grid_forget()     
  64.         gp_35R.grid_forget() 
  65.         loc_17R.grid()
  66.        
  67.     fen.update()
  68.    
  69. ###################################################
  70. # fonction pour faire disparaitre l'image de fond #
  71. ###################################################
  72. def supprimer_lb_image ():
  73.     global lb_image
  74.        
  75.     if lb_image!=None:
  76.         lb_image.destroy()
  77.         lb_image=None
  78.     else:
  79.         pass
  80. #######################################
  81. #             IMPORTANT (affichage des pages [loc,gp])
  82. ##########################################
  83. # afficher le contenu de la page (loc_35L)
  84. def afficher_loc_35L():
  85.     supprimer_lb_image ()#je supprime l'image pour afficher les frames
  86.     faire_apparaitre(loc_35L)
  87. # afficher le contenu de la page (loc_35R)
  88. def afficher_loc_35R():
  89.     supprimer_lb_image ()
  90.     faire_apparaitre(loc_35R)
  91.    
  92. # afficher le contenu de la page (loc_17R) 
  93. def afficher_loc_17R():
  94.     supprimer_lb_image () #je supprime l'image pour afficher les frames
  95.     faire_apparaitre(loc_17R)
  96. # afficher le contenu de la page (gp_35L)
  97. def afficher_gp_35L():
  98.     supprimer_lb_image ()#je supprime l'image pour afficher les frames
  99.     faire_apparaitre(gp_35L)
  100.    
  101. # afficher le contenu de la page (gp_35R)
  102. def afficher_gp_35R():
  103.     supprimer_lb_image ()
  104.     faire_apparaitre(gp_35R)
  105.        
  106. # afficher le contenu de la page (gp_17R) 
  107. def afficher_gp_17R():
  108.     supprimer_lb_image () #je supprime l'image pour afficher les frames
  109.     faire_apparaitre(gp_17R)
  110.        
  111.    
  112. def donothing():
  113.    filewin = Toplevel(fen)
  114.    button = Button(filewin, text="Do nothing button" )
  115.    button.grid()
  116.    
  117. def quitter():
  118.     fen.destroy()
  119.    
  120. ####################################
  121. # A propos de l'application : Info #
  122. ####################################
  123.    
  124. def info_de_application():
  125.     info=Toplevel(fen)
  126.     info.title('A propos de l\'application')
  127.     lb1=Label(
  128.     info,
  129.     font=('tahoma', 13, 'bold'),
  130.     fg='black', padx=15,
  131.     text='\nCette application a été conçue pour effectuer\nla correction demandée par l\'avion LABO\ndurant le contrôle en vol, de la ddm du signal\nrayonné par rapport à la ddm exigée par \nl\'avion LABO.\n',
  132.     justify='left')
  133.     lb1.grid()
  134.     lb2=Label(
  135.     info,
  136.     font=('tahoma', 12, 'bold'),
  137.     fg='black',
  138.     text='Version : 1.0\nCopyright © 2018\n',
  139.     justify='center')
  140.      
  141.     lb2.grid()
  142.  
  143.      
  144. ################################
  145. # fin patie application : Info #
  146. ################################
  147.    
  148. fen = Tk()
  149. fen.geometry('560x300+400+200')
  150. fen.title('System d\'atterissage : ILS')
  151.  
  152. ###############################################
  153. # cration de l'icone de la fenetre principale #
  154. ###############################################
  155.  
  156. fen.iconbitmap('cev.ico')#code pour visualiser un icone pour l'application
  157.  
  158. ##############################
  159. # cration de l'image de fond #
  160. ##############################
  161.  
  162. logo=PhotoImage(file='cev.png')
  163. lb_image=Label(fen,image=logo)#code pour visualiser l'image de fond
  164. lb_image.grid()
  165.  
  166. ######################################################
  167. # creations des frames : ILS_35L , ILS_35R , ILS_17R #
  168. ######################################################
  169. gp_35L=Frame(fen,width='560',height='300',bg='red')
  170. gp_35L.grid()
  171. gp_35R=Frame(fen, width='560',height='300',bg='pink')
  172. gp_35R.grid()
  173. gp_17R=Frame(fen, width='560',height='300',bg='powder blue')
  174. gp_17R.grid()
  175. loc_35L=Frame(fen, width='560',height='300', bg='green')
  176. loc_35L.grid()
  177. loc_35R=Frame(fen,width='560',height='300',bg='blue')
  178. loc_35R.grid()
  179. loc_17R=Frame(fen, width='560',height='300',bg='grey')
  180. loc_17R.grid()
  181.  
  182. ##########################################
  183. # debut du container Menu
  184. ##########################################
  185.  
  186. menu=Menu(fen)
  187. ################
  188. # onglet : ILS#
  189. ################
  190.    
  191. sousmenu=Menu(menu, tearoff=0)
  192. menu.add_cascade(label='ILS', menu=sousmenu)
  193. sous_sousmenu=Menu(sousmenu, tearoff=0)
  194. sousmenu.add_cascade(label='ILS 35R', menu=sous_sousmenu)
  195. sous_sousmenu.add_command(label="LOC 35R", command=afficher_loc_35R)
  196. sous_sousmenu.add_command(label="GP 35R", command=afficher_gp_35R)
  197. sous_sousmenu=Menu(sousmenu, tearoff=0)
  198. sousmenu.add_cascade(label='ILS 35L', menu=sous_sousmenu)
  199. sous_sousmenu.add_command(label="LOC 35L", command=afficher_loc_35L)
  200. sous_sousmenu.add_command(label="GP 35L", command=afficher_gp_35L)
  201. sous_sousmenu=Menu(sousmenu, tearoff=0)
  202. sousmenu.add_cascade(label='ILS 17R', menu=sous_sousmenu)
  203. sous_sousmenu.add_command(label="LOC 17R", command=afficher_loc_17R)
  204. sous_sousmenu.add_command(label="GP 17R", command= afficher_gp_17R)
  205. sousmenu.add_separator()
  206.  
  207. sousmenu.add_command(label="Quitter", command=quitter)
  208. fen.config(menu=menu)
  209.  
  210. fen.mainloop()


 
voici le deuxième code de l'application réduite qui ne fonctionne pas comme je le souhaite: (l'application plante sur une couleur et ne change pas qu'apres plusieures tentatives) :
 

Code :
  1. #coding:utf-8
  2.  
  3. from tkinter import *
  4.  
  5. ############################################
  6. # fonction pour faire basculer l'affichage #
  7. # des frames : ILS_35L , ILS_35R , ILS_17R #
  8. ############################################
  9. def faire_apparaitre(frame):
  10.     global fen
  11.     for item in ['loc_35L','loc_17R','loc_35R','gp_17R','gp_35L','gp_35R']:       
  12.         if item==frame:
  13.             supprimer_lb_image ()
  14.             frame.grid()
  15.            
  16.         else:
  17.             frame.grid_forget()
  18.         fen.update()
  19.    
  20. ###################################################
  21. # fonction pour faire disparaitre l'image de fond #
  22. ###################################################
  23. def supprimer_lb_image ():
  24.     global lb_image
  25.        
  26.     if lb_image!=None:
  27.         lb_image.destroy()
  28.         lb_image=None
  29.     else:
  30.         pass
  31. #######################################
  32. #             IMPORTANT (affichage des pages [loc,gp])
  33. ##########################################
  34. # afficher le contenu de la page (loc_35L)
  35. def afficher_loc_35L():
  36.     supprimer_lb_image ()#je supprime l'image pour afficher les frames
  37.     faire_apparaitre(loc_35L)
  38. # afficher le contenu de la page (loc_35R)
  39. def afficher_loc_35R():
  40.     supprimer_lb_image ()
  41.     faire_apparaitre(loc_35R)
  42.    
  43. # afficher le contenu de la page (loc_17R) 
  44. def afficher_loc_17R():
  45.     supprimer_lb_image () #je supprime l'image pour afficher les frames
  46.     faire_apparaitre(loc_17R)
  47. # afficher le contenu de la page (gp_35L)
  48. def afficher_gp_35L():
  49.     supprimer_lb_image ()#je supprime l'image pour afficher les frames
  50.     faire_apparaitre(gp_35L)
  51.    
  52. # afficher le contenu de la page (gp_35R)
  53. def afficher_gp_35R():
  54.     supprimer_lb_image ()
  55.     faire_apparaitre(gp_35R)
  56.        
  57. # afficher le contenu de la page (gp_17R) 
  58. def afficher_gp_17R():
  59.     supprimer_lb_image () #je supprime l'image pour afficher les frames
  60.     faire_apparaitre(gp_17R)
  61.        
  62.    
  63. def donothing():
  64.    filewin = Toplevel(fen)
  65.    button = Button(filewin, text="Do nothing button" )
  66.    button.grid()
  67.    
  68. def quitter():
  69.     fen.destroy()
  70.    
  71. ####################################
  72. # A propos de l'application : Info #
  73. ####################################
  74.    
  75. def info_de_application():
  76.     info=Toplevel(fen)
  77.     info.title('A propos de l\'application')
  78.     lb1=Label(
  79.     info,
  80.     font=('tahoma', 13, 'bold'),
  81.     fg='black', padx=15,
  82.     text='\nCette application a été conçue pour effectuer\nla correction demandée par l\'avion LABO\ndurant le contrôle en vol, de la ddm du signal\nrayonné par rapport à la ddm exigée par \nl\'avion LABO.\n',
  83.     justify='left')
  84.     lb1.grid()
  85.     lb2=Label(
  86.     info,
  87.     font=('tahoma', 12, 'bold'),
  88.     fg='black',
  89.     text='Version : 1.0\nCopyright © 2018\n',
  90.     justify='center')
  91.      
  92.     lb2.grid()
  93.  
  94.      
  95. ################################
  96. # fin patie application : Info #
  97. ################################
  98.    
  99. fen = Tk()
  100. fen.geometry('560x300+400+200')
  101. fen.title('System d\'atterissage : ILS')
  102.  
  103. ###############################################
  104. # cration de l'icone de la fenetre principale #
  105. ###############################################
  106.  
  107. fen.iconbitmap('cev.ico')#code pour visualiser un icone pour l'application
  108.  
  109. ##############################
  110. # cration de l'image de fond #
  111. ##############################
  112.  
  113. logo=PhotoImage(file='cev.png')
  114. lb_image=Label(fen,image=logo)#code pour visualiser l'image de fond
  115. lb_image.grid()
  116.  
  117. ######################################################
  118. # creations des frames : ILS_35L , ILS_35R , ILS_17R #
  119. ######################################################
  120. gp_35L=Frame(fen,width='560',height='300',bg='red')
  121. gp_35L.grid()
  122. gp_35R=Frame(fen, width='560',height='300',bg='pink')
  123. gp_35R.grid()
  124. gp_17R=Frame(fen, width='560',height='300',bg='powder blue')
  125. gp_17R.grid()
  126. loc_35L=Frame(fen, width='560',height='300', bg='green')
  127. loc_35L.grid()
  128. loc_35R=Frame(fen,width='560',height='300',bg='blue')
  129. loc_35R.grid()
  130. loc_17R=Frame(fen, width='560',height='300',bg='grey')
  131. loc_17R.grid()
  132.  
  133. ##########################################
  134. # debut du container Menu
  135. ##########################################
  136.  
  137. menu=Menu(fen)
  138. ################
  139. # onglet : ILS#
  140. ################
  141.    
  142. sousmenu=Menu(menu, tearoff=0)
  143. menu.add_cascade(label='ILS', menu=sousmenu)
  144. sous_sousmenu=Menu(sousmenu, tearoff=0)
  145. sousmenu.add_cascade(label='ILS 35R', menu=sous_sousmenu)
  146. sous_sousmenu.add_command(label="LOC 35R", command=afficher_loc_35R)
  147. sous_sousmenu.add_command(label="GP 35R", command=afficher_gp_35R)
  148. sous_sousmenu=Menu(sousmenu, tearoff=0)
  149. sousmenu.add_cascade(label='ILS 35L', menu=sous_sousmenu)
  150. sous_sousmenu.add_command(label="LOC 35L", command=afficher_loc_35L)
  151. sous_sousmenu.add_command(label="GP 35L", command=afficher_gp_35L)
  152. sous_sousmenu=Menu(sousmenu, tearoff=0)
  153. sousmenu.add_cascade(label='ILS 17R', menu=sous_sousmenu)
  154. sous_sousmenu.add_command(label="LOC 17R", command=afficher_loc_17R)
  155. sous_sousmenu.add_command(label="GP 17R", command= afficher_gp_17R)
  156. sousmenu.add_separator()
  157.  
  158. sousmenu.add_command(label="Quitter", command=quitter)
  159.  
  160. fen.config(menu=menu)
  161.  
  162.  
  163. fen.mainloop()


 
J'aimerais bien qu'on m'aide a trouver pourquoi le deuxieme code ne marche pas comme je le souhaite
 
Merci pour l'aide

mood
Publicité
Posté le 06-08-2018 à 20:31:52  profilanswer
 

n°2318766
gilou
Modérateur
Modzilla
Posté le 07-08-2018 à 01:26:21  profilanswer
 

Tu as mis frame la ou il fallait item dans faire_apparaitre
 
On peut réécrire le code initial en simplifiant:

Code :
  1. #coding:utf-8
  2.  
  3. from tkinter import *
  4.  
  5. ############################################
  6. # fonction pour faire basculer l'affichage #
  7. # des frames : ILS_35L , ILS_35R , ILS_17R #
  8. ############################################
  9. def faire_apparaitre(frame):
  10.    global fen
  11.    for item in (loc_35L, loc_17R, loc_35R, gp_17R, gp_35L, gp_35R):      
  12.        if item!=frame:
  13.            item.grid_forget()
  14.    frame.grid()
  15.    fen.update()
  16.  
  17. ###################################################
  18. # fonction pour faire disparaitre l'image de fond #
  19. ###################################################
  20. def supprimer_lb_image ():
  21.    global lb_image
  22.      
  23.    if lb_image!=None:
  24.        lb_image.destroy()
  25.        lb_image=None
  26.  
  27. #######################################
  28. #  IMPORTANT (affichage des pages [loc,gp])
  29. ##########################################
  30. # afficher le contenu de la page (frame)
  31. def afficher_frame(frame):
  32.    supprimer_lb_image ()#je supprime l'image pour afficher les frames
  33.    faire_apparaitre(frame)
  34.  
  35. def donothing():
  36.   filewin = Toplevel(fen)
  37.   button = Button(filewin, text="Do nothing button" )
  38.   button.grid()
  39.  
  40. def quitter():
  41.    fen.destroy()
  42.  
  43. ####################################
  44. # A propos de l'application : Info #
  45. ####################################
  46.  
  47. def info_de_application():
  48.    info=Toplevel(fen)
  49.    info.title('A propos de l\'application')
  50.    lb1=Label(
  51.    info,
  52.    font=('tahoma', 13, 'bold'),
  53.    fg='black', padx=15,
  54.    text='\nCette application a été conçue pour effectuer\nla correction demandée par l\'avion LABO\ndurant le contrôle en vol, de la ddm du signal\nrayonné par rapport à la ddm exigée par \nl\'avion LABO.\n',
  55.    justify='left')
  56.    lb1.grid()
  57.    lb2=Label(
  58.    info,
  59.    font=('tahoma', 12, 'bold'),
  60.    fg='black',
  61.    text='Version : 1.0\nCopyright © 2018\n',
  62.    justify='center')
  63.    
  64.    lb2.grid()
  65.  
  66.    
  67. ################################
  68. # fin patie application : Info #
  69. ################################
  70.  
  71. fen = Tk()
  72. fen.geometry('560x300+400+200')
  73. fen.title('System d\'atterissage : ILS')
  74.  
  75. ###############################################
  76. # cration de l'icone de la fenetre principale #
  77. ###############################################
  78.  
  79. fen.iconbitmap('cev.ico')#code pour visualiser un icone pour l'application
  80.  
  81. ##############################
  82. # cration de l'image de fond #
  83. ##############################
  84.  
  85. logo=PhotoImage(file='cev.png')
  86. lb_image=Label(fen,image=logo)#code pour visualiser l'image de fond
  87. lb_image.grid()
  88.  
  89. ######################################################
  90. # creations des frames : ILS_35L , ILS_35R , ILS_17R #
  91. ######################################################
  92. frames = []
  93. colors = ['red', 'pink', 'powder blue', 'green', 'blue', 'grey']
  94. for i in range(0,6):
  95.    frames.append(Frame(fen,width='560',height='300',bg=colors[i]))
  96.    frames[i].grid()
  97.  
  98. (loc_35L, loc_17R, loc_35R, gp_17R, gp_35L, gp_35R) = tuple(frames)
  99.  
  100. ##########################################
  101. # debut du container Menu
  102. ##########################################
  103.  
  104. menu=Menu(fen)
  105. ################
  106. # onglet : ILS#
  107. ################
  108.  
  109. sousmenu=Menu(menu, tearoff=0)
  110. menu.add_cascade(label='ILS', menu=sousmenu)
  111. sous_sousmenu=Menu(sousmenu, tearoff=0)
  112. sousmenu.add_cascade(label='ILS 35R', menu=sous_sousmenu)
  113. sous_sousmenu.add_command(label="LOC 35R", command=lambda: afficher_frame(loc_35R))
  114. sous_sousmenu.add_command(label="GP 35R", command=lambda: afficher_frame(gp_35R))
  115. sous_sousmenu=Menu(sousmenu, tearoff=0)
  116. sousmenu.add_cascade(label='ILS 35L', menu=sous_sousmenu)
  117. sous_sousmenu.add_command(label="LOC 35L", command=lambda: afficher_frame(loc_35L))
  118. sous_sousmenu.add_command(label="GP 35L", command=lambda: afficher_frame(gp_35L))
  119. sous_sousmenu=Menu(sousmenu, tearoff=0)
  120. sousmenu.add_cascade(label='ILS 17R', menu=sous_sousmenu)
  121. sous_sousmenu.add_command(label="LOC 17R", command=lambda: afficher_frame(loc_17R))
  122. sous_sousmenu.add_command(label="GP 17R", command=lambda: afficher_frame(gp_17R))
  123. sousmenu.add_separator()
  124.  
  125. sousmenu.add_command(label="Quitter", command=quitter)
  126. fen.config(menu=menu)
  127.  
  128. fen.mainloop()


A+,


Message édité par gilou le 07-08-2018 à 01:43:59

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2318767
atlass2182​18
Posté le 07-08-2018 à 02:51:15  profilanswer
 

bonsoir;
merci pour avoir rectifié  le code initial. j'essaie de comprendre les améliorations apportées au code

n°2318773
gilou
Modérateur
Modzilla
Posté le 07-08-2018 à 08:46:38  profilanswer
 

La seule vraie amélioration, c'est de passer par un lambda pour éviter de définir 6 fois le même appel de fonction avec un paramètre différent associées aux 6 commandes.
Au final, c'est pareil (6 fonctions anonymes différentes associées aux 6 commandes), mais c'est bien plus lisible et maintenable.
 
Notes que je suis absolument pas programmeur python ( [:maestro fantastico:2], perl rulez, etc.) , un programmeur expérimenté trouvera surement d'autres améliorations à y apporter.
 
A+,


Message édité par gilou le 07-08-2018 à 08:52:19

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2318776
rufo
Pas me confondre avec Lycos!
Posté le 07-08-2018 à 09:25:35  profilanswer
 

Tu ne travaillerais pas sur un aéroport ou pour le contrôle aêrien, toi? :D Parce qu'on voit pleins de ILS, LOC...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta

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

  application operationel amelioree devient non fonctionnel

 

Sujets relatifs
Besoins de votre avis sur une application[HTML] Formulaire fonctionnel sur navigateur mais bugué sur instagram.
Delphi / TurboPascal : Detecter si un application est utiliser (focus)Probleme avec ActiveX InternetExplorer.Application suite a Fall Creato
Appeler DllMain d'une librairie dans une application console WindowsSVP besoin de votre aide pour création application!
Quel langage pour automatiser des tâches dans une applicationApplication de detection de mouvement
Macro qui lance application avec Utilisateur et mdp[Batch] Lancer un application avec control
Plus de sujets relatifs à : application operationel amelioree devient non fonctionnel


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR