Partage
  • Partager sur Facebook
  • Partager sur Twitter

Label modifiable

    4 mars 2015 à 15:50:24

    Bonjour, je cherche comment modifier un Label après avoir appelé mainloop() ou pouvoir afficher ma fenêtre sans que mainloop soit appelée.  Car je voudrais afficher un texte dans les labels comme avec un Print() classique.

    -
    Edité par BatisteDalari 4 mars 2015 à 15:51:17

    • Partager sur Facebook
    • Partager sur Twitter
      4 mars 2015 à 15:59:55

      Salut

      Tu as essayé quelque chose ? Je ne pense pas, sinon tu aurais probablement trouvé, mais pas grave, voici comment on fait :

      label = Label(parent, text = 'Texte')
      label['text'] = 'Nouveau texte'



      • Partager sur Facebook
      • Partager sur Twitter
        4 mars 2015 à 16:07:30

        On a déjà pensé à faire cela mais on voudrait changer le texte en fonction de ce que l'utilisateur va mettre dans le widget entry. Par exemple, on met dans le label "que veux tu faire ?" et le joueur écrit "Attaquer". Dans ce cas le Label doit donc changer pour poser une autre question. Si je fais ce que tu m'as proposé, l'utilisateur va voir 'Nouveau texte' mais il ne verra pas 'Texte'.
        • Partager sur Facebook
        • Partager sur Twitter
          4 mars 2015 à 16:13:27

          Ben il suffit de créer un nouveau Label à chaque fois que tu appelles ta fonction qui demande à l'utilisateur ce qu'il doit faire. Je comprends pas le problème.
          • Partager sur Facebook
          • Partager sur Twitter
            4 mars 2015 à 16:20:17

            Voici mon code
            # On importe Tkinter
            import tkinter as Tkinter
            import os
            import time
            
            
            
            global region
            region = [[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1],[0,0,1,1]]
            global terrain
            terrain = [[2,7],[1,7,8,9,3],[2,8,9,10,4],[3,9,10,11,5],[4,10,11,12,6],[5,11,12],[1,2,8,14,13],[7,1,2,3,9,15,14,13],[10,4,3,2,8,14,15,16],[9,3,4,5,11,17,16,15],[10,4,5,6,12,18,17,16],[17,18,11,5,6],[7,8,14,20,19],[15,8,9,7,13,19,20,21],[16,10,9,8,14,20,21,22],[17,11,10,9,15,21,22,23],[18,12,11,10,16,22,23,24],[24,23,17,11,12],[20,13,14],[19,13,14,15,21],[22,20,14,15,16],[21,15,16,17,23],[22,16,17,18,24],[23,17,18]]
            global selection
            selection = 0
            
            
            def entrer():
                selection = int(entrer_de_texte.get())
                return(selection)
            
            
            
            def combat(region1,population1,region2,population2):
            	#Possibilité de l'attaque
            	possibilite = 0
            	
            	for c in range(terrain[(region1-1)]):
            		valeur = terrain[0][c]
            		if region2==valeur:
            			possibilite = possibilite + 1
            	if possibilite==0:
            		print("erreur")
            		return
            	##faire le combat
            	#Quoeficient aléatoire
            	
            def initialisation(textes):
                textes["text"]= "Quel est la zone que tu séléctionne"
                while selection==0:
                    time.sleep(0.2)
                #Ensuite je continu les questions réponses
            
            
            ##initialisation de la fenetre
            fenetre = Tkinter.Tk()
            fenetre.resizable(0,0) #bloquer les redimentions
            fenetre.geometry('1000x900') #résolution de la fenetre
            
            ##Affichage du titre
            titre = Tkinter.Label(fenetre,  text= "Total wars", width=40 ,  fg="red" , font=("Helvetica", 16))
            titre.pack()
            
            ##Initialisé la zone de déssin 
            fond=Tkinter.Canvas(fenetre,  width =798, height =550 , bg='gray')
            fond.pack()
            ##Afficher carte 
            photo0= Tkinter.PhotoImage(file="europe3.pgm") #creation variable photo
            largeur=photo0.width(); hauteur=photo0.height() #dimention de la photo
            image0=fond.create_image(largeur//2+1, hauteur//2+1, image=photo0)#affichage de l'image
            riri = fond.create_text(10,10, text="ee", width=30)
            contenu = Tkinter.StringVar()
            textes = Tkinter.Label(fenetre,width = 40, font=("Helvetica", 10))
            textes.pack()
            entrer_de_texte = Tkinter.StringVar()
            zone_de_entrer = Tkinter.Entry(fenetre, textvariable=entrer_de_texte, width=30)
            zone_de_entrer.pack()
            bouton_entrer = Tkinter.Button(fenetre, text="Validée", command=entrer)
            bouton_entrer.pack()
            
            
            fenetre.mainloop()
            
            initialisation(textes)
            
            
            
            
            
            Toutes les modification de initialisation() ne marche pas et si je mets initialisation() avant fenetre.mainloop() la fenêtre ne s’ouvre pas.

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              4 mars 2015 à 16:23:19

              Tu devrais suivre un cours complet sur tkinter.

              Je te conseille « Penser en Tkinter ». C'est un vieux cours d'introduction à tkinter, qui n'est pas totalement compatible avec la version actuel (la hiérarchie du package et les noms de certains modules ont changé depuis), mais il décrit toujours aussi bien la logique de tkinter.

              En t'aidant de la documentation tu ne devrais pas avoir de problème pour adapter les codes d'exemples. (cette doc existe en français, mais je ne trouve plus le lien, désolé)

              • Partager sur Facebook
              • Partager sur Twitter
                4 mars 2015 à 17:07:21

                Merci pour la doc. Je croit que pour résoudre mon problème je doit utiliser des binds .
                • Partager sur Facebook
                • Partager sur Twitter

                Label modifiable

                × 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