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()