Bonjour!
Je relance ce sujet, car j'ai un problème du même type, mais je n'arrive pas à adapter l'explication de Vychnou à mon cas...
Je débute en programmation python, avec le cours de Swinnen, et je bloque sur une petite application que j'ai essayé de créer pour mettre en application le chapitre sur Tkinter...
Alors pour commencer une petite screen de la fenêtre du programme:
Comme je suis passionné de jeu de rôle j'ai voulu faire un petit programme dans lequel on entre les valeurs des caractéristiques de son personnage, avec un maximum de 15 points à distribuer sur les six caractéristiques
Comme vous pouvez le voir, les valeurs s'affiche bien, tout, mais là où sa coince, c'est que lorsqu'on appuie sur les boutons + ou -, les valeurs de caractéristiques et le reste de point ne s'actualise pas...
Vu que c'est un peu répétitif d'une caractéristique à l'autre, voici juste un extrait du code:
# -*- coding:Utf-8 -*-
#-#-#-# Mini RPG #-#-#-#
# Petit essai de conception pour la mise au point d'un mini-RPG...
# Cette première partie vise à permettre au joueur d'attribuer les points de caractéristiques à son personnage...
from Tkinter import *
########### Définition des fonctions ##########
## Définition des caractéristiques :
# D'abord les caractéristiques et le reste des points à distribuer
force, resistance, magie, esprit, precision, esquive, reste = 8, 8, 8, 8, 8, 8, 15
# Ensuite des définitions qui vont avec
def incforce():
"Augmenter la force"
global force, reste
while reste >= 0:
force += 1
reste -= 1
return force, reste
def decforce():
"Baisser la force"
global force, reste
while (reste <=15) or (force >= 1):
force -= 1
reste += 1
return force, reste
[...]
########### -- Corps du programme -- ##########
fenetre = Tk()
fenetre.title("MiniRPG")
Label(fenetre, text='Bonjour et bienvenu sur le mini RPG du CRFN!', fg='blue') .grid(row=0, column=0, columnspan=4)
Label(fenetre, text='Nom :', fg='black').grid(row=1, column=0, sticky=W)
enternom = Entry(fenetre)
enternom.grid(row=1, column=1) # Entrer le nom
Label(fenetre, text='Prénom', fg='black').grid(row=1, column=2)
enterprenom = Entry(fenetre)
enterprenom.grid(row=1, column=3) # Entrer le prénom
# Ligne de la force
Label(fenetre, text='Force', fg='black').grid(row=2, column=0, sticky=W)
bdecforce = Button(fenetre, text='-', command=decforce)
bdecforce.grid(row=2, column=1)
varForce = StringVar()
varForce.set(str(force))
chpforce = Label(fenetre, textvariable=varForce)
chpforce.grid(row=2, column=2)
bincforce = Button(fenetre, text='+', command=incforce)
bincforce.grid(row=2, column=3)
[...]
Là où je ne vois pas comment adapter, c'est que la fonction qui fait changer la variable est appliquée au label. Pour moi, il y a deux fonctions qui agissent sur la même variable...
Est-ce que je pourrai avoir quelques explications supplémentaires?