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 :

Le combobox se transforme en int


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Points : 63
    Points
    63
    Par défaut Le combobox se transforme en int
    Salut, je comprends pas pourquoi mon combobox se transforme en INT, pourriez vous m'aider svp ? Concrètement que dois je faire pour passer le widget en argument de com() pour récupérer sa valeur svp ?
    Mon code me renvoie :
    .!example.!toplevel.!combobox
    1280

    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Users\Anon\Anaconda3\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)
    File "C:/Users/Anon/.spyder-py3/AssetsManagement/Mission3.py", line 18, in <lambda>
    w.config(postcommand=lambda: com(w, winMi3))
    File "C:/Users/Anon/.spyder-py3/AssetsManagement/Mission3.py", line 8, in com
    lb = ttk.Label(win, width=300, text=w.get(), anchor="center")
    AttributeError: 'int' object has no attribute 'get'

    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
    # -*- coding: utf-8 -*-
    from tkinter import Frame, Tk, Toplevel
    import tkinter.ttk as ttk
    import os
     
    def com(w, win):
        print(w)
        lb = ttk.Label(win, width=300, text=w.get(), anchor="center")
        lb.pack()
     
    def openMi3(root):
        winMi3 = Toplevel(root)
     
        w = ttk.Combobox(winMi3, values=['testOption1','test2'])
        print(w)
        w.current(newindex=0)
        w.pack()
        w.config(postcommand=lambda: com(w, winMi3))
     
        bouton = ttk.Button(winMi3, text="关闭", command=winMi3.destroy)
        bouton.pack()
     
        winMi3.geometry("300x300+100+100")
     
    def main():
        root = Tk()
        ex = Example(root)
        root.geometry("300x300+100+100")
        root.mainloop()
     
    class Example(Frame):
        def __init__(self, parent):
            Frame.__init__(self, parent)
            self.parent = parent
            self.initUI()
     
        def initUI(self):
            openMi3(self)
     
    if __name__ == '__main__':
        main()

  2. #2
    Membre confirmé

    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
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut,

    Dans ton code w est un widget ttk.Combobox, donc comme forcément il n'a pas de méthode get, il te retourne l'erreur logique.
    Ce que tu as bien dû constater en faisant un print du widget.

    Que veux-tu faire au juste ?
    Le temps ronge l'amour comme l'acide.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Points : 63
    Points
    63
    Par défaut
    Merci, je voudrais juste recuperer la valeur selectionnee quoi, jai lu dans la doc qu'il y avait get...

  4. #4
    Membre confirmé

    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
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Oui, tu as raison, il y a bien un get sur les combobox.

    J'ai testé ton code et pas d'erreur pour moi.

    Donc le problème vient à mon avis de spyder ou anaconda, comme à l'accoutumée...
    Bref de ton environnement d'exécution.
    Le temps ronge l'amour comme l'acide.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par bistouille Voir le message
    Oui, tu as raison, il y a bien un get sur les combobox.

    J'ai testé ton code et pas d'erreur pour moi.

    Donc le problème vient à mon avis de spyder ou anaconda, comme à l'accoutumée...
    Bref de ton environnement d'exécution.
    Oh nan
    Comment faire svp ??

    J'ai modifie mon code comme ceci, et j'ai rien qui s'affiche :
    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
    def com(truc, win):
        lb = ttk.Label(win, width=300, text=truc, anchor="center")#MODIF
        lb.pack()
        e = Entry(win, width=5)
        e.pack()
     
    def openMi3(root):
        winMi3 = Toplevel(root)
     
        w = ttk.Combobox(winMi3, values=['testOption1','test2'])
        test = w.get()#MODIF
        print(test)#AFFICHE RIEN
        w.current(newindex=0)
        w.pack()
        w.config(postcommand=lambda: com(test, winMi3))
     
        bouton = ttk.Button(winMi3, text="关闭", command=winMi3.destroy)
        bouton.pack()
     
        h = winMi3.winfo_screenheight()
        w = winMi3.winfo_screenwidth()
        winMi3.geometry(str(int(w / 1.5)) + 'x' + str(int(h / 1.5)) + '+' + str(int((w - (w / 1.5)) / 2)) + '+' + str(
            int((h - (h / 1.5)) / 3)))
        winMi3.title('使命3')
        winMi3.iconbitmap(os.path.abspath('icon.ico'))

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

    Citation Envoyé par Anonyme1784 Voir le message
    J'ai modifie mon code comme ceci, et j'ai rien qui s'affiche
    Si vous récupérer la valeur de la combobox avant qu'elle ait été sélectionné, rien ne va s'afficher. Sinon, pour le problème initial, essayez de le reproduire en lançant le script depuis la ligne de commande "normale" plutôt que depuis votre environnement/IDE de développement.

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

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Si vous récupérer la valeur de la combobox avant qu'elle ait été sélectionné, rien ne va s'afficher. Sinon, pour le problème initial, essayez de le reproduire en lançant le script depuis la ligne de commande "normale" plutôt que depuis votre environnement/IDE de développement.

    - W
    Merci,
    Quand je sélectionne dans la liste deroulante ca lance la fonction com, pourquoi vous dites que je recupere la valeur avant la selection ? Quand je recupere dans la fonction ca marche pas

Discussions similaires

  1. fonction transformation string->int
    Par Edta dans le forum Général Python
    Réponses: 3
    Dernier message: 11/04/2006, 14h03
  2. [Débutant] transformer int to string
    Par rherrad dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2005, 13h23
  3. Transformer un chiffre a virgule en int
    Par Battosaiii dans le forum C
    Réponses: 3
    Dernier message: 22/11/2005, 14h30
  4. [Debutant]Transformer string en int
    Par htaou dans le forum SL & STL
    Réponses: 7
    Dernier message: 09/09/2005, 22h28
  5. Transformation d'un vector en int !
    Par casafa dans le forum SL & STL
    Réponses: 12
    Dernier message: 08/04/2005, 23h25

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