Tout d'abord désolé pour le titre peu clair du sujet, je ne savais pas comment expliquer ce que je veux faire de façon suffisamment courte pour un titre.
Voilà donc : j'ai créé une fenêtre tkinter, avec un "Label" pour afficher différentes choses. Ces choses-là dépendent de fonctions. Cependant, pour la clarté du code, pour éviter d'avoir tout sur le même fichier .py, je veux mettre les fonctions sur un autre fichier. C'est là que je coince :
Ce code-là fonctionne :
import tkinter as tk
import random as rd
#definition de la fenetre
COMPTEUR_MAX = 10
compteur = 0
#fenetre graphique
ma_fenetre = tk.Tk()
ma_fenetre.title("Fenetre")
#labels
affichage = tk.Label(ma_fenetre, text="", font = ("Helvetica", 12))
affichage.grid(row=1, column=1)
#Boutons
bouton_lancer = tk.Button(ma_fenetre, text = "Commencer", command = lambda: lancer(ma_fenetre))
bouton_lancer.grid(row=3, column=1)
def lancer(ma_fenetre):
if rd.randint(1,5) == 1:
fonction_A(ma_fenetre)
else:
fonction_B(ma_fenetre)
def fonction_A(fenetre):
affichage.configure(text="affichage A")
fenetre.update_idletasks()
def fonction_B(fenetre):
affichage.configure(text="affichage B")
fenetre.update_idletasks()
ma_fenetre.mainloop()
Cependant, si, comme je l'ai dit, je crée un autre fichier, appelé par exemple "mes_fonctions.py", contenant les définitions de fonction_A et fonction_B, et que mon code principal est :
import tkinter as tk
import random as rd
from mes_fonctions import *
#definition de la fenetre
COMPTEUR_MAX = 10
compteur = 0
#fenetre graphique
ma_fenetre = tk.Tk()
ma_fenetre.title("Fenetre")
#labels
affichage = tk.Label(ma_fenetre, text="", font = ("Helvetica", 12))
affichage.grid(row=1, column=1)
#Boutons
bouton_lancer = tk.Button(ma_fenetre, text = "Commencer", command = lambda: lancer(ma_fenetre))
bouton_lancer.grid(row=3, column=1)
def lancer(ma_fenetre):
if rd.randint(1,5) == 1:
fonction_A(ma_fenetre)
else:
fonction_B(ma_fenetre)
ma_fenetre.mainloop()
j'obtiens l'erreur suivante : " NameError : name 'affichage' is not defined ".
Comment puis-je résoudre ce problème ? Merci d'avance.
Dans le code initial, "affichage" a valeur de variable globale, donc forcément ça marche. Dans le premier code c'était superflu d'ailleurs de passer "fenetre" en argument, car globale elle aussi.
tkinter - fonction qui agit sur un Label
× 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.