IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Création d'un menu avec Module Tkinder


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut Création d'un menu avec Module Tkinder
    Bonjour à tous

    J'ai écrit ce programme pour calculer et afficher les diviseurs d'un nombre en utilisant le module tkinder et il marche sans problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    from tkinter import *
     
    def action1():
       N=int(nombre.get())
       etiquette2['text']='Les diviseurs de N sont :'
       for i in range(1,N+1):
            if N%i==0:
                etiquette2['text']=etiquette2['text']+' '+str(i)+' '
     
    #Définition de la fenetre    
    app=Tk()
    app.geometry('400x100')
    app.title('Mathématiques Expertes')
    #app['bg']='red'
     
    etiquette1=Label(app,text='Entrer un nombre entier')
    etiquette1.place(x=10,y=10)
     
    etiquette2=Label(app,text='Les diviseurs de N sont :')
    etiquette2.place(x=10,y=35)
     
    nombre=int()
    nombre=Entry(app)
    nombre.place(x=150,y=10)
     
    Btn_valider=Button(app,text="Valider ce nombre",command=action1)
    Btn_valider.place(x=200,y=55)
     
     
     
     
    app.mainloop()
    Je veux maintenant créer un petit logiciel qui permettra de faire des calculs (nombre premier,PGCD, matrice).
    Je veux donc inclure le programme précédent avec un menu

    J'ai donc écrit ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    from tkinter import *
     
    def action1():
        print("coucou")
        N=int(nombre.get())
        print(N)
        etiquette2['text']='Les diviseurs de N sont :'
        for i in range(1,N+1):
            if N%i==0:
                etiquette2['text']=etiquette2['text']+' '+str(i)+' '
     
    def diviseur():
     
        etiquette1=Label(fen,text='Entrer un nombre entier')
        etiquette1.place(x=10,y=10)
        etiquette2=Label(fen,text='Les diviseurs de N sont :')
        etiquette2.place(x=10,y=35)
     
        #nombre=Entry(fen)
        nombre.place(x=150,y=10)
     
        Btn_valider=Button(fen,text="Valider ce nombre",command=action1)
        Btn_valider.place(x=200,y=55)
     
     
     
    fen=Tk()
     
    fen.geometry("400x300")
    fen.title("Mathématiques expertes")
     
    # 1) - Création de la barre des menus
     
    menuBar=Menu(fen)
     
    # 2) - Création des menus  principaux
     
    menuFichier = Menu(menuBar,tearoff=0)
    menuArithmetique = Menu(menuBar,tearoff=0)
    menuComplexe = Menu(menuBar,tearoff=0)
    menuMatrice = Menu(menuBar,tearoff=0)
    menuGraphe = Menu(menuBar,tearoff=0)
     
     
    # 3) - Ajout de commandes au menu principal
    menuBar.add_cascade(label="Fichier",menu=menuFichier)
     
    menuFichier.add_command(label= "Quitter",command=quit)
     
    menuBar.add_cascade(label="Arithmétique",menu=menuArithmetique)
    menuArithmetique.add_command(label="Divisibilité")
    menuArithmetique.add_command(label="PGCD")
    menuArithmetique.add_command(label="Diviseurs",command=diviseur)
     
    menuBar.add_cascade(label="Nombres Complexes",menu=menuComplexe)
    menuBar.add_cascade(label="Matrices",menu=menuMatrice)
    menuBar.add_cascade(label="Graphes",menu=menuGraphe)
     
    fen.config(menu=menuBar)
     
    nombre=int()
    nombre=Entry(fen)
    etiquette2=''
     
     
    fen.mainloop()
    Ce programme ne fonctionne pas. Je ne comprends pas mon erreur.
    Je vous remercie pour votre aide
    Boboss

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par boboss76 Voir le message
    Ce programme ne fonctionne pas. Je ne comprends pas mon erreur.
    Pour comprendre votre erreur, il faut commencer par examiner le message d'erreur.

    Il vous permettrait déjà de (vous) posez la question de pourquoi çà plante à cette ligne là avec ce message.

    Cette étape là est "basique": tous les programmeurs font des erreurs en codant... le boulot est d'arriver à relire son code pour comprendre pourquoi çà râle et imaginer comment corriger la bourde.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Pour comprendre votre erreur, il faut commencer par examiner le message d'erreur.

    Il vous permettrait déjà de (vous) posez la question de pourquoi çà plante à cette ligne là avec ce message.

    Cette étape là est "basique": tous les programmeurs font des erreurs en codant... le boulot est d'arriver à relire son code pour comprendre pourquoi çà râle et imaginer comment corriger la bourde.

    - W
    Merci de ta réponse. J'ai déjà corrigé des erreurs avec les variables globales et locales. mais là je sèche
    Voici l'erreur
    Nom : Capture.JPG
Affichages : 151
Taille : 29,0 Ko
    Alors que dans la premier programme cela fonctionne. C'est étrange.
    Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Le message d'erreur dit quoi? TypeError: 'str' object does not support item assignment.
    Et l'instruction est etiquette2['text'] =... donc etiquette2 est n objet de type str.

    Si on relit le code, ligne 62, on trouve etiquette2=''.

    Probablement parce que l'erreur précédente était NameError.

    C'est quoi la différence entre les 2 codes concernant cette variable? Dans l'un elle est définie comme variable globale dans le 2nd comme variable locale.

    La solution la plus simple sera d'utiliser le mot clef global (et de réviser un peu pourquoi il faut l'utiliser ici).

    Mais... vous avez un problème plus grave: votre intention est de proposer à l'utilisateur plusieurs opérations. Chaque opération consistera à entrer une ou plusieurs valeurs et afficher des résultats. Les widgets à afficher et mettre à jour vont être spécifiques à chacune (et probablement aussi les variables associées).

    Il y a pleins de solutions, mais vous devez le faire avec le Python que vous connaissez.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    C'est bon.J'ai trouvé.
    J'avais mal défini la variable.
    Merci de ton aide @wiztricks

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    J'ai une autre question
    Je veux effacer les widgets sur une fenetre.
    J'ai écrit cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def effacer():
        print(fen.winfo_children())
        for w in fen.winfo_children():
            w.destroy()
    Effectivement , cela efface tous les widgets sur la fenetre, mais je voudrais laisser mon menu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [<tkinter.Menu object .!menu>, <tkinter.Entry object .!entry>, <tkinter.Label object .!label>, <tkinter.Label object .!label2>, <tkinter.Label object .!label3>, <tkinter.Button object 
    .!button>, <tkinter.Button object .!button2>]
    Je voudrais garder le 1er objet.

    Merci de votre aide
    Boboss

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2020, 17h49
  2. [Forum] Création de menu avec des sous menu en ascenseur
    Par fraizas77 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/08/2012, 14h37
  3. Réponses: 0
    Dernier message: 01/10/2009, 17h40
  4. Création d'un forms avec un menu
    Par sebpern dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/03/2009, 10h30
  5. Création d'un menu avec forms 6i
    Par ORAnab dans le forum Forms
    Réponses: 2
    Dernier message: 26/05/2008, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo