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 :

champ saisie stringvar tkinter efface le zéro du champ


Sujet :

Tkinter Python

Vue hybride

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Par défaut champ saisie stringvar tkinter efface le zéro du champ
    Bonjour,

    J'ai du mal à comprendre pourquoi lorsque je ré ouvre la fenêtre avec un nombre débutant par un zéro dans un champ Entry Tkinter celui-ci disparaît alors qu'il s'affiche bien dans le treeview et bien sur dans la base de données sql server ?
    Merci d'avance pour vos réponses.


    Nom : 2.png
Affichages : 536
Taille : 45,6 Ko
    Nom : 3.png
Affichages : 570
Taille : 62,3 Ko
    Images attachées Images attachées  

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Un widget Entry n'enlève pas les 0 de gauche ni rien d'autres (à moins d'voir spécifié un validatecommand) , le problème vient d'ailleurs, et la seule chose qui me vient à l'esprit est que tu transformes peut-être quelque part ta chaine en entier ce qui ferait perdre les 0 de gauche.

    Sinon, bah, montre un exemple simple de code reproduisant le problème, parce que des sceenshots, ça n'aide pas beaucoup.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Par défaut
    Salut,

    Merci d'avoir répondu, j'ai simplifié le code pour faire apparaitre seulement les éléments nécessaire dans la top level maj de tkinter


    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
    class Database:
                       
        
                def update(self, ID, MfrPartNumber,MonMFC, PartDescription,MonSymbole,MonDessin,MesOM,MaDesignationFonctionnelle,MonConstructeur,MaRefConstructeur,MonNomFournisseur
                       ,MaRefFournisseur,MonAutreFournisseur,MaRefAutreFournisseur,MonType,MonLCN,MonGCONF,MADESIGNATION_DE):
                self.cur.execute("UPDATE dbo.tblPartMain SET MfrPartNumber=?,MonMFC=?,PartDescription=?, MonSymbole=?, MonDessin=?, MesOM=?, MaDesignationFonctionnelle=?,MonConstructeur=?,"
                                 "MaRefConstructeur=?,MonNomFournisseur=?,MaRefFournisseur=?,MonAutreFournisseur=?,MaRefAutreFournisseur=?,MonType=?,MonLCN=?,MonGCONF=?,MADESIGNATION_DE=? WHERE ID = ?",
                                 (MfrPartNumber,MonMFC, PartDescription,MonSymbole,MonDessin,MesOM,MaDesignationFonctionnelle,MonConstructeur,MaRefConstructeur,
                                  MonNomFournisseur,MaRefFournisseur,MonAutreFournisseur,MaRefAutreFournisseur,MonType,MonLCN,MonGCONF,MADESIGNATION_DE,ID))
                self.conn.commit()
    
          
            def __del__(self):
                self.conn.close()

    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
    def view_command():
    
        global row
        prechargement()
    
        tree.delete(*tree.get_children())
        
    
    
        for row in database.view():
    
    
            tree.insert("", END, values=(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8],
                                             row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16],
                                             row[17], row[18], row[19]))
            
        preload.destroy()






    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
    ###############################  UPDATE LISTE DE PIECES#################################################################
    def OnSelected(event):
        global ID, UpdateWindow
        curItem = tree.focus()
        contents =(tree.item(curItem))
        selecteditem = contents["values"]
        ID = selecteditem[0]
        MFRPARTNUMBER.set("")
        MFRPARTNUMBER.set(selecteditem[1])
       
    
    
        UpdateWindow = Toplevel()
        UpdateWindow.title("MAJ Liste de Pièces")
        width = 400
        height = 600
        screen_width = fen_princ.winfo_screenwidth()
        screen_height = fen_princ.winfo_screenheight()
        x = ((screen_width / 2) - 455) - (width / 2)
        y = ((screen_height / 2) + 20) - (height / 2)
        UpdateWindow.resizable(0, 0)
        UpdateWindow.geometry("%dx%d+%d+%d" % (width, height, x, y))
        UpdateWindow.iconbitmap("image.ico")
        UpdateWindow.grab_set()  # eviter de pouvoir ouvrir plusieurs fois la même fenetre
        UpdateWindow.focus_set()  # donne le focus sur la fenêtre
    c'est donc le champ en rouge qui perd le zéro du début !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par dockys Voir le message
    c'est donc le champ en rouge qui perd le zéro du début !
    La commande magique "print" vous permettrait d'afficher ce qu'est selecteditem[1] via "print (type(selecteditem[1]), selecteditem[1])". Si c'est un nombre, vous avez déjà la réponse.

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Par défaut
    Salut,


    en effet : <class 'int'> 7320362
    si je rajoute ' j'obtiens une chaine
    <class 'str'> '07320362

    mais alors comment faire en sorte que : 07320362 soit considérer comme une chaine sans devoir rajouter un caractère exemple ' et afficher 07320362 au lieu 7320362 ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par dockys Voir le message
    mais alors comment faire en sorte que : 07320362 soit considérer comme une chaine sans devoir rajouter un caractère exemple ' et afficher 07320362 au lieu 7320362 ?
    Ca va être compliqué car si vous affichez values=(..., '01234',....), lorsque vous récupérez ce "values", il devient values=(..., 1234,....) et la chaîne de caractères s'est transformée en "int".
    Personnellement, je ne fais jamais comme çà.
    Vous récupérez le contenu d'un record dans un widget pour le balancer dans un autre widget. En fait, il est préférable d'avoir le record d'un côté (avec ses types natifs) et associer (un dictionnaire) un identifiant entre l'item de la treeview et le record. On affiche les boûts qu'on veut et lors d'une sélection, on récupère l'identifiant de l'item, puis le record associé (via le dictionnaire) et on repart avec une copie intègre des données.

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

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/02/2007, 18h27
  2. Réponses: 16
    Dernier message: 17/06/2005, 15h51
  3. verifier champ saisie
    Par grellierj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/02/2005, 12h07
  4. Réponses: 3
    Dernier message: 04/08/2004, 15h09

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