Erreur Python: AttributeError: 'str' object has no attribute 'get'

Bonjour,

j’ai un problème de .get() a la ligne n°297 que j’ai ajouter le bloc def modifier(self): sans ce bloc tout fonctionne bien. Je voulais apporter une sécurité par la mise automatique en majuscule et minuscule. je début depuis plus de six mois en autodidacte tous n’ai pas encore claire pour moi, j’ai fais des testes que je rajoute. j’ai oublier de dire que je suis sous python 3.11, ceci est une partie de mon script qui fait (plus 480 lignes).

 # les variables
        self.id = StringVar()            # id
        self.titre = StringVar()         # Titre
        self.nom = StringVar()           # Nom
        self.prenom = StringVar()        # Prenom
        self.mail = StringVar()          # Mail
        self.telephone = StringVar()     # Telephone
 
# Modifier
    def modifier(self):
        # id 
        strg = self.id
        self.id =strg
        strg = ""
 
        # titre 
        strg = self.titre
        self.titre = strg
        strg = ""
 
        # nom en majuscule
297  strg = self.nom.get()
        self.nom = strg.upper()
        strg = ""
 
        # prem. lettre en majuscule
     strg=self.prenom.get()
        self.prenom = strg.title()
        strg = ""
 
        # chaine en minuscule
        strg=self.mail.get()
        self.mail = strg.lower()
        strg = ""
 
        # ville en majuscule
        strg = self.ville.get()
        self.ville = strg.upper()
        strg = ""
 
        # telephone 
        strg = self.telephone 
        self.telephone = strg
        strg = ""
 
 
 # conexion a la base de donnés 
        con = sqlite3.connect("creerinscript.db")
        cur = con.cursor()
        cur.execute("update formordi set titre=?, nom=?, prenom=?, mail=?, telephone=?,\
                    date=?, cotisation=?, ville=?, code_postal=?, adresse=? where id=?",
                    ((self.titre.get(),              # Titre
                    self.nom.get(),                  # Nom 
                    self.prenom.get(),               # Prenom 
                    self.mail.get(),                 # mail
                    self.telephone.get(),            # Telephone

message d’erreur :

File « d:\Python\projet_python\Formulaire_adherent_2\Etudiant-D-conversion-1.py », line 297, in modifier
strg = self.nom.get()
^^^^^^^^^^^^
AttributeError: ‹ str › object has no attribute ‹ get ›

merci pour de l’aide
cordialement
kyrob

Hello @kyrob

Ici, j’ai remarqué que la variable id et titre ne font pas appel à get(), pourquoi vous l’avez faire appeler sur la variable ‹ nom › ?

Concernant votre question « comment remplacer get et par quoi ? »

Avez-vous entendu parler du Type Casting sur Python, vous convertie le contenu du variable en String. S’il vous plait essayer cette ligne et dites moi.

strg = str(self.nom)

bonjour Michel,
pour id et titre je ne fait pas de modifications, pour le nom, prénom, mail et ville je fait une conversion pour le nom en majuscule avec upper, title, pour la première lettre en majuscule pour le prénom et lower tous en minuscule pour le mail, rappelle du module.

# nom en majuscule
        strg = self.nom.get()
        self.nom = strg.upper()
        strg = ""

je vais regarder demain pour Type Casting sur python.
je viens d’essayé strg = str(self.nom) dans tous le bloc ça se passe bien pas d’erreur jusqu’à l’enregistrement dans la base de donnée (bloque au niveau du nom
dans les variables plus rien (vide)
cordialement
kyrob