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 :
Voici mes combobox :
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'
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 dataMa 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 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
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 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)
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()
Partager