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 :

Effacer le contenu ComboBox et non la liste [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre régulier Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 74
    Points
    74
    Par défaut Effacer le contenu ComboBox et non la liste
    Bonjour à tous,

    Je souhaite effacer pour mettre à zero mes "combobox" pour une saisie suivante.J'ai lu est étudié pas mal de tutos, mais je n'ai rien trouvé pour arriver à juste effacer la le contenu sélectionné dans le champ. Im me manque quelque chose, mais je ne vois pas. Pourriez-vous s'il vous plaît m'aider. Je progresse doucement, mais surement.

    J'ai ce message d'erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "C:\Users\xxxxxxx\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
        return self.func(*args)
      File "C:\Users\xxxxxx\Documents\PythonDevProgramme\MnesisProject\main4.py", line 358, in <lambda>
        command=lambda : save_citation(combo_auteur.get(), combo_theme.get(), entry_citation.get('1.0', END), entry_ref.get('1.0', END)))
      File "C:\Users\xxxxxx\Documents\PythonDevProgramme\MnesisProject\main4.py", line 306, in save_citation
        combo_auteur.subwidget_list['cmb_nomsauteur'].delete(0, Tk.END)
    AttributeError: 'Combobox' object has no attribute 'subwidget_list'
    Voici mes combobox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def cmb_nomsauteur(event=None):
        """ Récupération des données et insertion dans 
            combobox auteur_citation """
     
        connexion = sqlite3.connect('mnesis.db')
        cursor = connexion.cursor()
        cursor.execute('SELECT auteur_auteur FROM tb_auteur ORDER BY auteur_auteur')
        data = []
        for row in cursor.fetchall():
            data.append(row[0])
        return data
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def cmb_theme(event=None):
        """ Récupération des données et insertion dans 
            combobox theme_theme """
     
        connexion = sqlite3.connect('mnesis.db')
        cursor = connexion.cursor()
        cursor.execute('SELECT theme_theme FROM tb_theme ORDER BY theme_theme')
        data = []
        for row in cursor.fetchall():
            data.append(row[0])
        return data
    Ma fonction et aux lignes 18 à 23 l'on trouve l'objet de ma demande :

    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
    def save_citation(citation_auteur, citation_theme, citation_citation, citation_reference):
        """ Insertion des données dans database tb_citation """
        try:    
                connection = sqlite3.connect('mnesis.db') # Connection à la BdD
                cursor = connection.cursor() # création du curseur
                #création variable new_citation
                req = "INSERT INTO tb_citation( citation_auteur, citation_theme, citation_citation, citation_reference) VALUES ('"+citation_auteur+"','"+citation_theme+"', '"+citation_citation+"', '"+citation_reference+"')"
                cursor.execute(req)
     
        except Exception as e:
                print("ERREUR",e)
                connection.rollback()
        finally:
                cursor.close()
                connection.commit() # Valider l'enregistrement dans la database
                connection.close() ## Fermeture de la connection
     
                # Delete textbox after records
                combo_auteur.subwidget_list['cmb_nomsauteur'].delete(0, Tk.END)
                combo_theme.subwidget_list['cmb_theme'].delete(0, Tk.END)
                entry_citation.delete('1.0', END)
                entry_verset.delete('1.0', END)
                entry_ref.delete('1.0', END)
    Mon formulaire :

    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
    def write_citation():
        """ Saisie des citations """
        global combo_auteur
        global combo_theme
        global entry_citation
        global entry_verset
        global entry_ref
     
        tpl_citation = Toplevel()  # == Contructeur Toplevel ==
        tpl_citation.title(" Bienvenue dans la saisie des citations")
        screen_x = int(tpl_citation.winfo_screenwidth())
        screen_y = int(tpl_citation.winfo_screenheight())
        tpl_citation_x = 1024
        tpl_citation_y = 600
        pos_x = (screen_x // 2) - (tpl_citation_x // 2)
        pos_y = (screen_y // 2) - (tpl_citation_y // 2)
        geo = "{}x{}+{}+{}".format(tpl_citation_x, tpl_citation_y, pos_x, pos_y)
        tpl_citation.geometry(geo)
        tpl_citation.resizable(width=False,height=False) # Fenêtre modifiable True or False
        tpl_citation.configure(bg='lightblue3')
        #---
        citation_auteur_label = Label(tpl_citation, text="Auteur",bg='lightblue3', font=("Arial", 12,"bold"))
        citation_auteur_label.place(x=30,y=38)
        # Combobox noms des auteurs 
        # Récupération des valeurs de la fonction def cmb_nomsauteur():   
        combo_auteur = ttk.Combobox(tpl_citation, values=cmb_nomsauteur(), width=25, font=("Century Gothic", 14,"bold")) 
        combo_auteur.bind('<<ComboboxSelected>>', cmb_nomsauteur)
        combo_auteur.place(x=30,y=65)
        # Récupération des valeurs de la fonction def cmb_theme():   
        citation_theme_label = Label(tpl_citation, text="Thème",bg='lightblue3', font=("Arial", 12,"bold"))
        citation_theme_label.place(x=450,y=38)
     
        combo_theme = ttk.Combobox(tpl_citation, values=cmb_theme(), width=25, font=("Century Gothic", 14,"bold")) 
        combo_theme.bind('<<ComboboxSelected>>', cmb_theme)
        combo_theme.place(x=450,y=65)
        #------------       
        citation_label = Label(tpl_citation, text="Citation",bg='lightblue3', font=("Arial", 12,"bold"))
        citation_label.place(x=30,y=100)
        entry_citation = Text(tpl_citation, width="107", height="19", font=("Arial", 12))
        entry_citation.place(x=30,y=127)
        ref_label = Label(tpl_citation, text="Référence",bg='lightblue3', font=("Arial", 12,"bold"))
        ref_label.place(x=30,y=485)
        entry_ref = Text(tpl_citation, width="107", height="1",font=("Arial", 12))
        entry_ref.place(x=30,y=512)
        # get => thetext = text.get ('1.0', 'end') cela veut dire ('1.0') de la 1ère à 'end' la fin de la dernière ligne
        boutonEnregistrer = Button(tpl_citation, text='Enregistrer', 
                                   command=lambda : save_citation(combo_auteur.get(), combo_theme.get(), entry_citation.get('1.0', END), entry_ref.get('1.0', END)))
        boutonEnregistrer.pack(side=BOTTOM, anchor=SE, padx=20, pady=20) 
     
        # fin de la boucle
        tpl_citation.mainloop()
    LagratteCchouette
    La musique donne une âme à nos cœurs et des ailes à la pensée - Platon

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

    Le message d'erreur vous dit seulement qu'une Combobox n'a pas d'attribut 'subwidget_list'.
    Python ne peut pas exécuter l'instruction "combo_auteur.subwidget_list['cmb_nomsauteur'].delete(0, Tk.END)".
    Mais comme çà sort de votre chapeau, pas sûr qu'on puisse en dire plus.

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

  3. #3
    Membre régulier Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 74
    Points
    74
    Par défaut Suite
    D'accord,
    je vous remercie de ma répondre et de me mettre sur la piste assez souvent.
    Mais pourquoi si peu d'aide sur ce forum ?

    Sur d'autres types de langage la communauté est très empathique et pédagogique.

    Essayons quand même !!
    LagratteCchouette
    La musique donne une âme à nos cœurs et des ailes à la pensée - Platon

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Citation Envoyé par lagratteCchouette Voir le message
    Mais pourquoi si peu d'aide sur ce forum ?
    Pour avoir un peu plus d'aide, il faut poster un code simple qui puisse être lancé et permettre de reproduire le problème. Çà permet aux moins débutants que vous de comprendre ce qu'il se passe et de vous suggérer des alternatives.

    S'il faut un bon niveau d'expertise pour vous aider, çà réduit la population des "sachants".

    Et la plupart des "sachants" qui passent par là risquent de ne pas vous lire (vu comment vous racontez vos problèmes).

    Pour ma part, je ne vais pas rédiger juste pour vous ce que vous auriez déjà du trouver dans un tuto. ou en pratiquant un peu: je me contente de vous donner une pisté, et si d'autres ont envie d'élaborer la dessus....

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

  5. #5
    Membre régulier Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 74
    Points
    74
    Par défaut
    Merci,

    Mais j'avais regardé ces 2 tutos : Tuto1 / Tuto2

    LagratteCchouette
    La musique donne une âme à nos cœurs et des ailes à la pensée - Platon

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut et joyeux noël!

    Citation Envoyé par lagratteCchouette Voir le message
    Mais j'avais regardé ces 2 tutos : Tuto1 / Tuto2
    Ce sont des exemples d'utilisation de Combobox de la bibliothèque Tix.
    Celles de votre code sortent de la bibliothèque ttk.

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

  7. #7
    Membre régulier Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 74
    Points
    74
    Par défaut
    Merci beaucoup c'est super sympa.
    Au plaisir et portez-vous bien.
    LagratteCchouette
    La musique donne une âme à nos cœurs et des ailes à la pensée - Platon

  8. #8
    Membre régulier Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 74
    Points
    74
    Par défaut Solution
    Et voilà la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            # Delete textbox after records
            entry_auteur.delete('1.0', END)
            entry_info.delete('1.0', END)
    LagratteCchouette
    La musique donne une âme à nos cœurs et des ailes à la pensée - Platon

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

Discussions similaires

  1. effacer le contenu de la combobox
    Par pepsister dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 19/04/2007, 09h59
  2. [Formulaire]effacer le contenu d'une zone de liste
    Par laurent.w dans le forum IHM
    Réponses: 5
    Dernier message: 06/02/2007, 13h53
  3. effacer le contenu d'uun combobox
    Par Edta dans le forum Tkinter
    Réponses: 3
    Dernier message: 21/07/2006, 15h22
  4. Effacer le contenu d'une liste
    Par Yux dans le forum Langage
    Réponses: 2
    Dernier message: 01/06/2006, 15h16
  5. Effacer le contenu d une zone de liste
    Par nico5151 dans le forum IHM
    Réponses: 23
    Dernier message: 22/06/2005, 15h50

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