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

Tkinter Python Discussion :

Probleme avec radio bouton et entry ?


Sujet :

Tkinter Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut Probleme avec radio bouton et entry ?
    Bonjour,

    Je suis débutant python, j'utilise tkinter, et ma version est la 2.7.6.
    J'ai créé un petit programme pour envoyer des sms sur mobile.
    ça marche impeccable, cependant j'ai fait un dictionnaire pour les contacts.
    Afin d'ajouter les contacts dans le dico, j'ai fait un genre de formulaire avec entry et des cases à cocher (radiobouton) pour la civilité.
    Je n'arrive pas ajouter les radios boutons au reste ?
    Je ne comprends pas d'où vient le problème ?
    Pouvez-vous m'expliquer quelle erreur j'ai fait ?

    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
    def ajouter_contact_au_dico():
        filewin = Toplevel(fenetre)
        Label(filewin, text="Civilité").grid(row=1, padx =14, pady =6)
        Label(filewin, text="Nom").grid(row=2, padx =14, pady =6)
        Label(filewin, text="Prénom").grid(row=3, padx =14, pady =6)
        Label(filewin, text="Téléphone").grid(row=4, padx =14, pady =6)
        Label(filewin, text="Identifiant").grid(row=5, padx =14, pady =6)
        Label(filewin, text="Mot de passe").grid(row=6, padx =14, pady =6)
     
        v = IntVar()
        Radiobutton(filewin, text="Mademoiselle", variable=v, value=1).grid(row=1, column =1)
        Radiobutton(filewin, text="Madame", variable=v, value=2).grid(row=1, column =2)
        Radiobutton(filewin, text="Monsieur", variable=v, value=3).grid(row=1, column =3)
        Radiobutton.pack()
        mainloop()
     
        string = StringVar(value='Entrée un nom')
        e2 = Entry(filewin, textvariable=string, width=22)
        e2.grid(row=2, column =1, padx =15, pady =6)
     
        string = StringVar(value='Entrée un prénom')
        e3 = Entry(filewin, textvariable=string, width=22)
        e3.grid(row=3, column =1, padx =15, pady =6)
     
        string = StringVar(value='Entrée un un numéro ')
        e4 = Entry(filewin, textvariable=string, width=22)
        e4.grid(row=4, column =1, padx =15, pady =6)
     
        string = StringVar(value="Entrée l'identifiant")
        e5 = Entry(filewin, textvariable=string, width=22)
        e5.grid(row=5, column =1, padx =15, pady =6)
     
        string = StringVar(value="Entrée le mot de passe")
        e6 = Entry(filewin, textvariable=string, width=22)
        e6.grid(row=6, column =1, padx =15, pady =6)
     
        button = Button(filewin, text="Effacer", command=filewin.quit).grid(row=7, column=0, sticky=W, pady=4)
        button = Button(filewin, text="Valider", command=filewin.quit).grid(row=7, column=1, sticky=W, pady=4)
        button = Button(filewin, text="Fermer", command=filewin.quit).grid(row=7, column=2, sticky=W, pady=4)
        button.pack()
    Retour erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__
        return self.func(*args)
      File "/home/laurent/python/fmsms/test_4.py", line 91, in ajouter
        Radiobutton.pack()
    TypeError: unbound method pack_configure() must be called with Radiobutton instance as first argument (got nothing instead)
    Merci.
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Le message d'erreur est clair, à quel RadioButton veux-tu appliquer le pack() ? et pourquoi faire puisque tu les as déjà tous les trois casés avec grid() ?

    Même chose plus loin avec le button.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    J'ai essayé avec ceci c''est pareil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    v = IntVar() 
        Radiobutton(filewin, text="Mademoiselle", variable=v, value="Mademoiselle").grid(row=1, column =1)
        Radiobutton(filewin, text="Madame", variable=v, value="Madame").grid(row=1, column =2)
        Radiobutton(filewin, text="Monsieur", variable=v, value="Monsieur").grid(row=1, column =3)
    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
    def ajouter_dico():
        global evad1, evad2, evad3, evad4, evad5, evad6, v
        filewin = Toplevel(root)
        #Configuration frame
        FBG = "black"
        FFG = "white"
        FFT = "Arial 12"
        FBD = "8"
        FRF = "flat" # Relief frame : (ridge, groove, raised, flat, sunken )
        Label(filewin, text="Ajouter un contact", bg=FBG, fg=FFG, font=FFT, bd=FBD, relief=FRF).grid(row=0, column =1, padx =0, pady =6)
        #Label(filewin, text="Ajouter un contact\n").grid(row=0, column =1, padx =14, pady =6)
        Label(filewin, text="Civilité").grid(row=1, padx =14, pady =6)
        Label(filewin, text="Nom").grid(row=2, padx =14, pady =6)
        Label(filewin, text="Prénom").grid(row=3, padx =14, pady =6)
        Label(filewin, text="Téléphone").grid(row=4, padx =14, pady =6)
        Label(filewin, text="Identifiant").grid(row=5, padx =14, pady =6)
        Label(filewin, text="Mot de passe").grid(row=6, padx =14, pady =6)
        Label(filewin, text="").grid(row=7, padx =14, pady =6)
        Label(filewin, text="").grid(row=9, padx =14, pady =6)
     
        v = IntVar()
        Radiobutton(filewin, text="Mademoiselle", variable=v, value="Mademoiselle").grid(row=1, column =1)
        Radiobutton(filewin, text="Madame", variable=v, value="Madame").grid(row=1, column =2)
        Radiobutton(filewin, text="Monsieur", variable=v, value="Monsieur").grid(row=1, column =3)
     
        #string_evad1 = StringVar(value='Entrée une civilité')
        #evad1 = Entry(filewin, textvariable=string_evad1, width=22)
        #evad1.grid(row=1, column =1, padx =15, pady =6)
        #print "string_evad1 : ", string_evad1
     
        string_evad2 = StringVar(value='Entrée un nom')
        evad2 = Entry(filewin, textvariable=string_evad2, width=22)
        evad2.grid(row=2, column =1, padx =15, pady =6)
     
        string_evad3 = StringVar(value='Entrée un prénom')
        evad3 = Entry(filewin, textvariable=string_evad3, width=22)
        evad3.grid(row=3, column =1, padx =15, pady =6)
     
        string_evad4 = StringVar(value='Entrée un  numéro ')
        evad4 = Entry(filewin, textvariable=string_evad4, width=22)
        evad4.grid(row=4, column =1, padx =15, pady =6)
     
        string_evad5 = StringVar(value="Entrée l'identifiant")
        evad5 = Entry(filewin, textvariable=string_evad5, width=22)
        evad5.grid(row=5, column =1, padx =15, pady =6)
     
        string_evad6 = StringVar(value="Entrée le mot de passe")
        evad6 = Entry(filewin, textvariable=string_evad6, width=22)
        evad6.grid(row=6, column =1, padx =15, pady =6)
     
        button = Button(filewin, text="Effacer", command=filewin.quit).grid(row=8, column=1, sticky=W, padx =0, pady=4)
        button = Button(filewin, text="Valider", command=valider_ajouter_dico).grid(row=8, column=1, sticky=W, padx =70, pady=4)
        button = Button(filewin, text="Fermer", command=filewin.destroy).grid(row=8, column=1, sticky=W, padx =140, pady=4)
     
    def valider_ajouter_dico(): 
        for index,agendas in enumerate(agenda): 
    	print index,agendas
     
        agendas['civilite'] = v.get()
        agendas['nom'] = evad2.get()
        agendas['prenom'] = evad3.get()
        agendas['telephone'] = evad4.get()
        agendas['identifiant'] = evad5.get()
        agendas['password'] = evad6.get()
    Retour erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__
        return self.func(*args)
      File "/home/laurent/python/fmsms/test_7.py", line 239, in valider_ajouter_dico
        agendas['civilite'] = v.get()
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 324, in get
        return getint(self._tk.globalgetvar(self._name))
    ValueError: invalid literal for int() with base 10: 'Mademoiselle'
    Je devrais avoir un retour de la case sélectionnée avec v.get() ors ce n'est pas le cas ?

    Merci.
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 279
    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 279
    Points : 36 765
    Points
    36 765
    Par défaut
    Salut,

    Citation Envoyé par xunil2003 Voir le message
    Je devrais avoir un retour de la case sélectionnée avec v.get() ors ce n'est pas le cas
    Relisez un peu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        v = IntVar() 
        Radiobutton(filewin, text="Mademoiselle", variable=v, value="Mademoiselle").grid(row=1, column =1)
    quelque part vous dites que la variable associée sera un "int", mais que par défaut, sa valeur est "Mademoiselle", i.e. un string.
    Ce n'est pas très cohérent...
    Et c'est juste ce que dit le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueError: invalid literal for int() with base 10: 'Mademoiselle'
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    Bonsoir,

    J'ai fait ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    v = StringVar() 
        R1 = Radiobutton(filewin, text="Mademoiselle", variable=v, value="Mademoiselle")
        R1.grid(row=1, column =1)
        R2 = Radiobutton(filewin, text="Madame", variable=v, value="Madame")
        R2.grid(row=1, column =2)
        R3 = Radiobutton(filewin, text="Monsieur", variable=v, value="Monsieur")
        R3.grid(row=1, column =3)
    Maintenant j'ai bien le retour avec "str(v.get())" selon la sélection de l'utilisateur.

    Merci.
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de radio bouton
    Par gromit83 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 17h04
  2. Probleme avec les boutons radio
    Par aproust dans le forum Linux
    Réponses: 3
    Dernier message: 11/05/2006, 08h05
  3. probleme avec le bouton precedent...
    Par julien_s dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/03/2006, 10h45
  4. probleme avec le bouton refresh du navigateur
    Par Chromatic dans le forum Langage
    Réponses: 7
    Dernier message: 26/02/2006, 12h26
  5. [FLASH MX] Probleme avec un bouton flash
    Par kgadhi dans le forum Flash
    Réponses: 8
    Dernier message: 02/12/2005, 14h06

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