Bonjour à tous, ce message a pour but de m'aider à comprendre pourquoi mon code ne fonctionne pas. Ceci n'est qu'un projet personnel.
code :
#module d'importation du tkinter
from tkinter import messagebox
from tkinter import *
import tkinter
from tkinter.ttk import *
#fenêtre d'acceuil
home = Tk()
home.title("Learn in python")
home.geometry("407x398")
home.minsize(407,398)
home.maxsize(430,398)
#création de la page débutant
def debutant_level():
def definition_variable():
def hide():
label_definition.destroy()
frame_debutant_def_variable.destroy()
label_definition = Label(debutant_page, text="Définition d'une variable : ")
label_definition.config(font=("Impact", 20), fg="red")
frame_debutant_def_variable = Frame(debutant_page)
text_def_variable = Text(frame_debutant_def_variable, wrap=WORD, height=6, width=80)
text_def_variable.insert(INSERT, "En termes simples, une variable est un conteneur dans lequel tu peux stocker différents types de données,")
text_def_variable.insert(INSERT, "comme des nombres, des chaînes de caractères ou même des objets plus complexes. ")
text_def_variable.insert(INSERT, "Ces données peuvent ensuite être modifiées, récupérées et utilisées tout au long de ton programme.")
text_def_variable.insert(INSERT, "Les variables deviennent vraiment utiles lorsqu’elles sont utilisées pour stocker des valeurs que tu souhaites manipuler ou comparer.")
button_hide_def_variable = Button(frame_debutant_def_variable, text="Masquer",relief=GROOVE, activebackground="light blue", command=hide)
label_definition.grid()
frame_debutant_def_variable.grid()
text_def_variable.grid()
button_hide_def_variable.grid()
def types_de_variable():
def hide_types_variable():
label_types_variable.destroy()
frame_types_variable.destroy()
label_types_variable = Label(debutant_page, text="Les différents types de variable :")
label_types_variable.config(font=("Impact", 20), fg="red")
frame_types_variable = Frame(debutant_page)
text_types_variable = Text(frame_types_variable, wrap=WORD, height=4, width=80)
text_types_variable.insert(INSERT, "-> bool : booléen (True ou False)\n")
text_types_variable.insert(INSERT, "-> int : entier.\n")
text_types_variable.insert(INSERT, "-> float : nombre flottant qui a la précision d'un double.\n")
text_types_variable.insert(INSERT, "-> str : chaîne de caractère (string).")
button_hide_types_variable = Button(frame_types_variable, text="Masquer", relief=GROOVE, command=hide_types_variable)
label_types_variable.grid()
frame_types_variable.grid()
text_types_variable.grid()
button_hide_types_variable.grid()
debutant_page = Tk()
debutant_page.title("Niveau débutant")
debutant_page.geometry("650x400")
debutant_page.minsize(650,400)
debutant_page.maxsize(650,400)
menu_2 = tkinter.Menu(debutant_page)
menu_variable = tkinter.Menu(menu_2, tearoff=0)
menu_affichage = tkinter.Menu(menu_2, tearoff=0)
menu_boucles = tkinter.Menu(menu_2, tearoff=0)
menu_fonction = tkinter.Menu(menu_2, tearoff=0)
menu_2.add_cascade(label="Les variables", menu=menu_variable)
menu_2.add_cascade(label="Affichage", menu=menu_affichage)
menu_2.add_cascade(label="Les boucles", menu=menu_boucles)
menu_2.add_cascade(label="Les fonctions", menu=menu_fonction)
menu_variable.add_command(label="1-Définition", command=definition_variable)
menu_variable.add_command(label="2-Types de variables", command=types_de_variable)
menu_variable.add_command(label="3-Opérations")
menu_variable.add_command(label="4-Conclusion")
debutant_page.config(menu=menu_2)
def intermediaire_level():
intermediaire_level = Tk()
intermediaire_level.title("Niveau intermédiaire")
intermediaire_level.geometry("410x400")
intermediaire_level.minsize(410,400)
intermediaire_level.maxsize(410,400)
#création de la page expert
def expert_level():
expert_level = Tk()
expert_level.title("Niveau expert")
expert_level.geometry("410x400")
expert_level.minsize(410,400)
expert_level.maxsize(410,400)
def a_propos():
def hide_text_a_propos():
frame_a_propos.destroy()
frame_a_propos = Frame(home)
text_a_propos = Text(frame_a_propos, wrap=WORD, height=8, width=50)
text_a_propos.insert(INSERT, "Bonour, cette application à été créer dans le but de vous aprendre le language")
text_a_propos.insert(INSERT, " de programation python. Je vous propose des cours, exercices, projets ...\n")
text_a_propos.insert(INSERT, "Ce projet a été réaliser par une seule personne. Si il y a des bugs, ou autre, merci de vous nous en informer dans l'onglet aide et la catégorie aide.")
bouton_a_propos_hide = Button(frame_a_propos, text="Masquer", command=hide_text_a_propos)
text_a_propos.config(state=DISABLED)
frame_a_propos.grid()
text_a_propos.grid()
bouton_a_propos_hide.grid()
def version():
messagebox.showwarning("Version:","This is the version 1.0.0")
def confirm():
confirmer = messagebox.askquestion("QUITTER ?","Es tu sur de vouloir quitter ?")
if confirmer == 'yes':
home.destroy()
def aide_contact():
def hide_text_aide():
frame_aide_contact.destroy()
frame_aide_contact = Frame(home)
text_aide = Text (frame_aide_contact, wrap=WORD, height=1, width=50)
text_aide.insert(INSERT, "exaple_mail@gmail.com")
bouton_aide = Button(frame_aide_contact, text="Masquer", command=hide_text_aide)
text_aide.config(state=DISABLED)
frame_aide_contact.grid()
text_aide.grid()
bouton_aide.grid()
#création de la barre de menu
menu_1 = tkinter.Menu(home)
#création des menus proposés
menu_cours = tkinter.Menu(menu_1, tearoff=0)
menu_exo = tkinter.Menu(menu_1, tearoff=0)
menu_aide = tkinter.Menu(menu_1, tearoff=0)
menu_quitter = tkinter.Menu(menu_1, tearoff=0)
menu_1.add_cascade(label="Cours", menu=menu_cours)
menu_1.add_cascade(label="Exercices", menu=menu_exo)
menu_1.add_cascade(label="Aide", menu=menu_aide)
menu_1.add_cascade(label="Quitter", menu=menu_quitter)
#Mettre les éléments dans la cascade
menu_cours.add_command(label="Débutant", command=debutant_level)
menu_cours.add_command(label="Intermédiaire", command=intermediaire_level)
menu_cours.add_command(label="Expert", command=expert_level)
menu_exo.add_command(label="Exercices débutant")
menu_exo.add_command(label="Exercices intérmediaire")
menu_exo.add_command(label="Exercices expert")
menu_exo.add_command(label="Projets réalisable")
menu_aide.add_command(label="Versions", command=version)
menu_quitter.add_command(label="Quitter", command=confirm)
home.config(menu=menu_1)
#LABEL,BOUTTON ... HOME
#GRID home(dans l'ordre)
#MAINLOOP(home)
home.mainloop()
Merci d'avance pour votre aide qui me sera très précieuse.
- Edité par TheoChesnel 27 décembre 2023 à 22:22:04
Le but est de t'aider à avancer dans la résolution de problèmes.
Indiquer l'erreur spécifié par ton interpréteur
Présenter graphiquement ce qui ne va pas, et comment ça devrait être présenté normalement
Donner toutes informations utiles aux membres du forum
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Re-bonjour, je suis navré d'avoir oublié ces informations.
message d'erreur :
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python312\Lib\tkinter\__init__.py", line 1948, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "c:\Users\Théo\Documents\Projets python\Python tkinter
solo 1.1.py", line 22, in definition_variable
label_definition.config(font=("Impact", 20), fg="red")
File "C:\Program Files\Python312\Lib\tkinter\__init__.py", line 1702, in configure
return self._configure('configure', cnf, kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python312\Lib\tkinter\__init__.py", line 1692, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown option "-fg"
Mon programme est censé afficher la définition d'une variable lorsque l'on clique dans le menu "cours" -> "débutant" -> "Les variables" -> "1-Définition".
Je pense qu'il n'y a pas pire que d'écrire ces deux lignes, il y a un gros risque de conflits entre ttk et tk.
from tkinter import *
from tkinter.ttk import *
L'objet Label que tu utilises est-ce celui de Tkinter ou ttk ? Je pense que c'est ttk, donc une autre manière de configurer, c'est pour cela que ça ne fonctionne pas comme dans ton tuto.
Si j'ai un conseil à te donner, c'est de juste travailler avec Tk et retirer ttk.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Bonjour, très bien j vais enlever cette ligne de code.
Après avoir enlever cette ligne, ai-je des changements à faire dans mon code?
À vous de tester !
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Et mon code fonctionne normalement. Cependant, dès lors où je supprime :
import tkinter
Mon code ne fonctionne plus du tout
"import" charge le module et y associe la variable globale tkinter. Si on supprime cet import, les lignes qui contiennent des tkinter.Menu planteront avec un message de type NameError: le nom "tkinter" n'est pas définit.
Ce qui est logique!
Plutôt que de recopier à moitié les suggestions qu'on vous fait, essayez de comprendre ce qu'il se passe (surtout lorsqu'on a la chance d'avoir un message d'erreur aussi explicite).
Enlève import tkinter et remplace tous les tkinter.menu par Menu
Pourquoi des fonctions qui contiennent des fonctions qui contiennent des fonctions ?
- Edité par Phil_1857 il y a 34 minutes
Merci beaucoup, ça a fonctionner en remplacent "tkinter.menu" par "Menu"
Pour te répondre par rapport aux fonctions que j'ai mis dans d'autre fonctions. C'est uniquement car je n'ai pas trouver d'autres 'solutions'. Est ce mal ou est ce qu'il y a mieux que de fonctionner comme ça ?
- Edité par TheoChesnel 28 décembre 2023 à 11:58:20
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)