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 :

probléme de récupération de donnée


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut probléme de récupération de donnée
    Bonjour,

    J'ai un petit problème pour récupérer la valeur d'une checkbox dans une class vous aller me dire "mais pourquoi tu utilise pas la méthode get()" simple je l'utilise mais elle n'a pas l'air de fonctionner dans mon cas car elle me renvoie toujours 0 alors je laisse a vos soin de trouver où sa M....

    Ashnar un noob du python

    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
     
    class conf :
        def __init__(self):
            self.pop_up = Tk()
            self.pop_up.title("Configurer votre programme")
            self.text = Label(self.pop_up, text="Choisissez votre configuration")
     
            self.quitter = Button(self.pop_up, text ='Quitter', command = self.pop_up.destroy)
            self.appliquer = Button(self.pop_up, text ='Appliquer',command = self.save_conf)
            self.annuler_saisie = Button(self.pop_up, text ='Annuler saisie',command = self.annul)
            self.val_check_sav = IntVar() 
            self.check_verifsav=Checkbutton(self.pop_up, variable=self.val_check_sav,onvalue = 1, offvalue = 0, text="Activer la vérification du fichier SAV lors de la création d'un support")
            print self.val_check_sav.get()
     
            self.text.grid(column = 0,row = 0, columnspan = 3)
            self.check_verifsav.grid(column = 0,row = 1, columnspan = 3)
            self.appliquer.grid(column = 0,row = 2)
            self.annuler_saisie.grid(column = 1,row = 2)
            self.quitter.grid(column = 2,row = 2)
            self.check_verifsav.select()
            print self.val_check_sav.get()
            self.pop_up.mainloop()
     
        def save_conf (self) :
     
            fd_conf = open("conf.txt", "w")
            print self.val_check_sav.get()
            if self.val_check_sav.get() == 1 :
                fd_conf.write("oui\n")
            else :
                fd_conf.write("non\n")
     
            fd_conf.close()

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonsoir,

    J'ai testé votre programme chez moi et je vous avoue que je n'ai pas trouvé d'erreur, tout à l'air de fonctionner correctement...
    Et pour cause, j'ai testé et voila un screen



    Si cela n'était pas votre problème, n'hésitez pas à me le faire savoir...

    Et... Il n'y a pas de NOOB, il n'y a que des NEWBIES

    Mickael

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    En fait il me semble qu'il manque du code pour cette question.

    Le code donné
    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
    #!/usr/bin/env python
    # -*- coding: ISO8859-1 -*-
    #
    #
    from Tkinter import *
     
    class conf :
        def __init__(self):
            self.pop_up = Tk()
            self.pop_up.title("Configurer votre programme")
            self.text = Label(self.pop_up, text="Choisissez votre configuration")
     
            self.quitter = Button(self.pop_up, text ='Quitter', command = self.pop_up.destroy)
            self.appliquer = Button(self.pop_up, text ='Appliquer',command = self.save_conf)
            #self.annuler_saisie = Button(self.pop_up, text ='Annuler saisie',command = self.annul)
            self.val_check_sav = IntVar() 
            self.check_verifsav=Checkbutton(self.pop_up, variable=self.val_check_sav,onvalue = 1, offvalue = 0, text="Activer la vérification du fichier SAV lors de la création d'un support")
            print self.val_check_sav.get()
     
            self.text.grid(column = 0,row = 0, columnspan = 3)
            self.check_verifsav.grid(column = 0,row = 1, columnspan = 3)
            self.appliquer.grid(column = 0,row = 2)
            #self.annuler_saisie.grid(column = 1,row = 2)
            self.quitter.grid(column = 2,row = 2)
            self.check_verifsav.select()
            print self.val_check_sav.get()
            self.pop_up.mainloop()
     
        def save_conf (self) :
            fd_conf = open("conf.txt", "w")
            print self.val_check_sav.get()
            if self.val_check_sav.get() == 1 :
                fd_conf.write("oui\n")
            else :
                fd_conf.write("non\n")
            fd_conf.close()
     
    conf()
    Fonctionne.

    Une recherche de self.val_check_sav dans ton code devrais t'en dire plus.

    Bonne découverte.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut
    j'avoue ne pas comprendre j'ai fais le même test que vous à part de mon programme principal et cela fonctionne effectivement comme je l'attendais mais une fois intégré dans mon programme principal qui contient déjà une fenêtre d'un coup cela ne fonctionne plus. Donc je complète mon code (que j'ai testé à part histoire de pas refaire un programme qui marche ^^). La j'obtiens bien le bug que je veut pas c'est a dire un affichage que de 0, quelque soit l'état de la checkbox lorsque l'on appuie sur appliquer. En voici le 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
    67
    68
    69
    70
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
    from os.path import *
    from tkFileDialog import *
    from webbrowser import open_new
     
    class conf :
        def __init__(self):
            self.pop_up = Tk()
            self.pop_up.title("Configurer votre programme")
            self.text = Label(self.pop_up, text="Choisissez votre configuration")
     
            self.quitter = Button(self.pop_up, text ='Quitter', command = self.pop_up.destroy)
            self.appliquer = Button(self.pop_up, text ='Appliquer',command = self.save_conf)
            self.annuler_saisie = Button(self.pop_up, text ='Annuler saisie',command = self.annul)
            self.val_check_sav = IntVar() 
            self.check_verifsav=Checkbutton(self.pop_up, variable=self.val_check_sav,onvalue = 1, offvalue = 0, text="Activer la vérification du fichier SAV lors de la création d'un support")
            print self.val_check_sav.get()
     
            self.text.grid(column = 0,row = 0, columnspan = 3)
            self.check_verifsav.grid(column = 0,row = 1, columnspan = 3)
            self.appliquer.grid(column = 0,row = 2)
            self.annuler_saisie.grid(column = 1,row = 2)
            self.quitter.grid(column = 2,row = 2)
            self.check_verifsav.select()
            print self.val_check_sav.get()
     
     
        def save_conf (self) :
     
            fd_conf = open("conf.txt", "w")
            print self.val_check_sav.get()
            if self.val_check_sav.get() == 1 :
                fd_conf.write("oui\n")
            else :
                fd_conf.write("non\n")
     
            fd_conf.close()
     
        def annul (self) :
     
            fd_conf = open("conf.txt", "r+")
            ligne = fd_conf.readline()
     
            if ligne == "oui" :
                self.check_verifsav.select()
            else :
                self.check_verifsav.deselect()
     
            fd_conf.close()
     
        def loop (self):
            self.pop_up.mainloop()
     
    def configure() :
        print "configure"
        test = conf()
        test.annul()
        test.loop()
     
     
    fenetre = Tk()
     
    menu1 = Menu(fenetre)
    fichier = Menu(menu1, tearoff=0)
    menu1.add_cascade(label="Fichier",menu=fichier)
    fichier.add_command(label="configure", command=configure)
    fenetre.config(menu=menu1)
    fenetre.mainloop()
    En espérant que cela donne un bug (sa me fait bizarre de demander du bug dans un programme ^^)

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonjour,

    En effet, l'erreur est bizarre mais surement normal... Pour ma part, dans votre cas, je vous conseille de passer par une boite de dialogue, après avoir cherché sur google une solution, je vous ai concocté un petit programme à votre image qui fonctionne correctement, seul soucis, l'affichage des boutons (leurs dispositions), mais Tkinter n'est pas ma tasse de thé, mais vous vous trouverez surement la solution

    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
    67
    68
    69
    # -*- coding: cp1252 -*-
    from Tkinter import *
     
    class MyDialog:
     
        def __init__(self, parent):
            top = self.top = Toplevel(parent)
            top.title("Configurer votre programme")
     
            self.text = Label(self.top, text="Choisissez votre configuration")
     
            self.val_check_sav = IntVar() 
            self.check_verifsav=Checkbutton(self.top, variable=self.val_check_sav,onvalue = 1, offvalue = 0, text="Activer la vérification du fichier SAV lors de la création d'un support")
     
            self.quitter = Button(self.top, text ='Quitter', command = self.top.destroy)
            self.appliquer = Button(self.top, text ='Appliquer',command = self.save_conf)
            self.annuler_saisie = Button(self.top, text ='Annuler saisie',command = self.annul)
     
            """
            J'ai un petit problème poru organiser les widgets
            self.text.grid(column = 0,row = 0, columnspan = 3)
            self.check_verifsav.grid(column = 0,row = 1, columnspan = 3)
            self.appliquer.grid(column = 0,row = 2)
            self.annuler_saisie.grid(column = 1,row = 2)
            self.quitter.grid(column = 2,row = 2)
            """
     
            self.text.pack()
            self.check_verifsav.pack()
            self.appliquer.pack()
            self.annuler_saisie.pack()
            self.quitter.pack()
     
        def save_conf (self) :
     
            fd_conf = open("conf.txt", "w")
            print self.val_check_sav.get()
            if self.val_check_sav.get() == 1 :
                fd_conf.write("oui\n")
            else :
                fd_conf.write("non\n")
     
            fd_conf.close()
     
        def annul (self) :
     
            fd_conf = open("conf.txt", "r+")
            ligne = fd_conf.readline()
     
            if ligne == "oui" :
                self.check_verifsav.select()
            else :
                self.check_verifsav.deselect()
     
            fd_conf.close()
     
    def configure() :
        print "configure"
        d = MyDialog(fenetre)
        fenetre.wait_window(d.top)
     
    fenetre = Tk()
     
    menu1 = Menu(fenetre)
    fichier = Menu(menu1, tearoff=0)
    menu1.add_cascade(label="Fichier",menu=fichier)
    fichier.add_command(label="configure", command=configure)
    fenetre.config(menu=menu1)
    fenetre.mainloop()
    Si vous avez un autre problème n'hesitez pas à poster un petit message, sinon n'oubliez pas de mettre "Résolu"

    Bon courage à vous...

    Mickael

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut
    Merci cela fonctionne, je les pas encore intégrer a mon programme principal mais ça à l'air de fonctionner. Cela devais pécher du fait qu'il n'y avais pas de liaison entre les deux fenêtre et que l'autre continuer a tourner en tache de fond donc Merci.
    En résumer utiliser fils = Toplevel(parent) pour définir la fenetre fils et parent.wait_window(fils) pour que le parent attende son fils ^^

    PS : voila on modifie 2 lignes dans mon programme et ça fonctionne YATAA

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

Discussions similaires

  1. Réponses: 31
    Dernier message: 27/07/2006, 13h51
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [MySQL] problème de récupération de données incompréhensible
    Par yanice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/07/2006, 22h45
  4. [MySQL] Problème de récupération de données
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 05/04/2006, 15h13
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

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