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.
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'.
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.
# 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.
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é)
Merci pour la doc. Je croit que pour résoudre mon problème je doit utiliser des binds .
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.
Toutes les modification de initialisation() ne marche pas et si je mets initialisation() avant fenetre.mainloop() la fenêtre ne s’ouvre pas.