Bonjour à tous,
J'ai passé pas mal de temps à comprendre par moi-même, mais j'avoue que là je patine.
Pourriez-vous s'il vous plaît m'aider à comprendre la logique des combobox et des fonctions.

Je crée une BdD de citations tb_auteur et tb_citation. Une fois que j'ai créé les auteurs, je veux pouvoir en récupérant ceux-ci renseigner mon formulaire citation afin d'assigner à un même auteur plusieurs citations: Exemple Socrate a dit... pleins de choses.

En utilisant la fonction def cmb_nomsauteur(): afi de nourrir ma combobox... je n'arrive pas à récupérer les données de ma table afin de nourrir cette liste et ensuite il me faudra récupérer par get() la valeur ...

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
# -*- coding: utf-8 -*-
from tkinter import *
import tkinter as tk
from tkinter import font
from PIL import Image, ImageTk # module image
 
def cmb_nomsauteur():
        conn = sqlite3.connect("mnesis.db") # Spécifier le nom de votre base de données dans le même répertoire.
        noms = [] # Création d'une liste afin de récupérer les noms des auteurs
        for row in conn.execute('select auteur_auteur from tb_auteur;'): # Boucle afin de lire la database
                data = row[0];
        noms.append(data) #Valeur de la variable contenant le contenu de la requête
        listenomsauteurSelect = StringVar()
        result = (noms)
        listenomsauteur = Combobox(fenetre_pce, textvariable = listenomsauteurSelect, values = result, state = 'readonly')
 
fenetre_pce =Tk() # Fenêtre prinicpale
 
labelCitation_Auteur = Label(fenetre_pce, text="Auteur",bg='lightblue3', font=("Arial", 12,"bold"))
labelCitation_Auteur.place(x=30,y=38)
 
cmb_nomsauteur.place(x=30,y=65)
 
fenetre_pce.mainloop()
J'ai le message d'erreur suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
[Running] python -u "c:\chemin\menesis_database_projet-03\frontend_test cmb.py"
Traceback (most recent call last):
  File "c:\chemin\menesis_database_projet-03\frontend_test cmb.py", line 22, in <module>
    cmb_nomsauteur.place(x=30,y=65)
AttributeError: 'function' object has no attribute 'place'


Mais cela marche avec cela :

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
 
# -*- coding: utf-8 -*-
from tkinter import *
from tkinter.ttk import *
import sqlite3
 
fenetre_pce = Tk() # Le constructeur
#=======================================================================
 
conn = sqlite3.connect("mnesis.db") # Spécifier le nom de votre base de données dans le même répertoire.
noms = [] # Création d'une liste afin de récupérer les noms des auteurs
for row in conn.execute('select auteur_auteur from tb_auteur;'): # Boucle afin de lire la database
    data = row[0];
    noms.append(data) #Valeur de la variable contenant le contenu de la requête
 
listenomsauteurSelect = StringVar()
result = (noms)
listenomsauteur = listecategorie = Combobox(fenetre_pce, textvariable = listenomsauteurSelect, values = result, state = 'readonly')
 
#=======================================================================
listenomsauteur.pack()
fenetre_pce.geometry("300x300+120+120")
fenetre_pce.mainloop()
merci beaucoup par avance pour vos lumières...