Partage
  • Partager sur Facebook
  • Partager sur Twitter

mise à jour de texte de label tkinter

combobox

Sujet résolu
    15 janvier 2018 à 14:53:32

    slm tout le monde

    voilà brièvement je voulais que mon texte d'un label change à chaque fois je choisi une élément d'une liste combobox voilà un bout de code qui me casse la tete lol. 

    ##########################pour Combobox######################################"
        txtEtiqElem="Longueur d'onde au repos de la raie Considérée (Å) : "
        
        def EtiqElement(event):
            global txtEtiqElem
            #global label1
            if float(ligne_texte1.get())==6562.808:
                
                txtEtiqElem="Longueur d'onde au repos de la raie $H_{\alpha}$ (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==6678.160:
                
                txtEtiqElem="Longueur d'onde au repos de la raie HeI (Singlet) (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==5875.660:
                #txtEtiqElem=StringVar()
                txtEtiqElem="Longueur d'onde au repos de la raie HeI (D3) (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==5895.942:
                #txtEtiqElem=StringVar()
                txtEtiqElem="Longueur d'onde au repos de la raie Na (D2) (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==5188.700:
                
                txtEtiqElem="Longueur d'onde au repos de la raie TiII (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==4861.300:
                
                txtEtiqElem="Longueur d'onde au repos de la raie $H_{\beta}$ (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==4934.006:
                
                txtEtiqElem="Longueur d'onde au repos de la raie FeI (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==4923.921:
                
                txtEtiqElem="Longueur d'onde au repos de la raie FeII (Å) : "
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==4685.680:
                
                txtEtiqElem="Longueur d'onde au repos de la raie HeII"
                label1['text']=txtEtiqElem
                
            elif float(ligne_texte1.get())==6678.160:
                
                txtEtiqElem="Longueur d'onde au repos de la raie $H_{\gamma}$ (Å) : "
                label1['text']=txtEtiqElem
                
            else:
                
                txtEtiqElem="Longueur d'onde au repos de la raie Considérée (Å) : "
                label1['text']=txtEtiqElem
                
        
                
            #label1.configure(text=txtEtiqElem)
            
               
         
        
        ###############################################################################################
        
        
        label1= Label(cadre3,bg="gray",text=EtiqElement, fg="black", width=40, anchor='w')
        
       
        label1.grid(row=0, column=0, rowspan=2, padx=2, pady=2)
        
        
        
        ############################Combobox#############################"
        H_alpha=6562.808
        HeI_Singlet=6678.160
        HeI_D3=5875.660
        Na_D2=5895.942
        TiII=5188.700
        H_beta=4861.300
        FeI=4934.006
        FeII=4923.921
        HeII=4685.680
        H_gamma=4340.500
        
        
        
        print("Combobox jariri", dicCombobox)
        ligne_texte1=Combobox(cadre3, width=10)
        if float(dicCombobox[1])<= H_alpha <= float(dicCombobox[2]) and float(dicCombobox[1])<= HeI_Singlet <= float(dicCombobox[2]):
            ligne_texte1['values']=(H_alpha, HeI_Singlet)
        elif float(dicCombobox[1])<= HeI_D3 <= float(dicCombobox[2]) and float(dicCombobox[1])<= Na_D2 <= float(dicCombobox[2]):
            ligne_texte1['values']=(HeI_D3, Na_D2)
        elif float(dicCombobox[1])<=TiII <= float(dicCombobox[2]) :
            ligne_texte1['values']=(TiII)
        elif float(dicCombobox[1])<= H_beta <= float(dicCombobox[2]) and float(dicCombobox[1])<= FeI <= float(dicCombobox[2]) and float(dicCombobox[1])<= FeII <= float(dicCombobox[2]):
            ligne_texte1['values']=(H_beta, FeI, FeII)
        elif float(dicCombobox[1])<= HeII <= float(dicCombobox[2]):
            ligne_texte1['values']=(HeII) 
        elif float(dicCombobox[1])<= H_gamma <= float(dicCombobox[2]):
            ligne_texte1['values']=(H_gamma) 
        else:        
            ligne_texte1['values']=(textbox)
            
        ligne_texte1.current(0)    
       
        ligne_texte1.bind('<<ComboboxSelected>>', EtiqElement)
        ##################################################################"
       
        ligne_texte1.grid(row=0, column=1,rowspan=2, padx=2, pady=2)

    le problème que lorsque je choisi un aute element rien ne change dans label1 

    merci pr votre aide



    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2018 à 19:45:56

      Pour qu'un label soit modifié de manière automatique il me semble qu'il faut obligatoirement passer par une variable StringVar() et un paramètre textvariable pour le Label. Ça ferait donc quelque chose du style:

      fenetre = Tk()
      texte = StringVar()
      affiche = Label(fenetre, textvariable=texte)
      
      #Pour changer le texte:
      if ... == ...:
          texte.set("...")
      else:
          texte.set("...")
      



      • Partager sur Facebook
      • Partager sur Twitter
        16 janvier 2018 à 2:02:21

        merci JamesElric pour ta réponse

        j'ai utilisé la méthode qui tu m'as envoyé mais vainement

        je sais plus quoi faire

        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2018 à 19:52:25

          from tkinter import*
          def change():
             texte.itemconfigure(text="Je sais pas")
          fen=Tk()
          fen.title("Titre")
          texte=Label(fen,text="Texte")
          texte.pack()
          Button(fen,text="Change",command=change).pack()
          
          Voila je pense que ca devrait aller.
          • Partager sur Facebook
          • Partager sur Twitter
          Salut c'est moi the geoffrey.
            17 janvier 2018 à 23:52:41

            Salut,

            GeoffreyKarnbach1, a fait une erreur. Ce n'est pas itemconfigure, mais configure.. puisque ce n'est pas un item de canva.

            from tkinter import*
            def change():
                ## SOIT:
                texte.configure(text="Je sais pas")
                ## SOIT:
                #texte['text'] = "Je sais pas"
            
            
            fen=Tk()
            fen.title("Titre")
            texte=Label(fen,text="Texte")
            texte.pack()
            Button(fen,text="Change",command=change).pack()

            Si cela ne fonctionne pas, ce n'est pas normal.

            Soit que vous avez mal expliqué votre problème, soit vous le faites pas comme il faut.

            Es-ce le label ou le combobox que vous essayez de modifier ?

            Bonne chance

            A+

            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2018 à 23:21:32

              salam les amis 

              merci beaucoup pour votre aide j'ai trouvé la solution en fait j'ai basé sur l'aide de JamesElric merci beaucoup j'avais un problème au niveau de :

              ligne_texte1.bind('<<ComboboxSelected>>', EtiqElement)

              le fait que la ligne ci-dessus elle est répétée dans une autre ligne en appelant une autre fonction événementielle donc l'astuce était de mettre la fonction EtiqElement() dans l'autre fonction comme ça j'ai pu changer le texte de label sachant que EtiqElement(event) est devenu EtiqElement() 

              merci    GeoffreyKarnbach1 pour votre réponse également c'est hyper gentil

              cordialement je poserai un autre problème que je rencontre dans mon projet merci 

              • Partager sur Facebook
              • Partager sur Twitter

              mise à jour de texte de label tkinter

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown