Résolue

Pyside6 et combobox

# Résolution d'erreurs # Interface graphique # Bases de données

Bonjour,

J'ai une base de donnée sqlite3.Je souhaite ajouter name à mon combobox

bdd = sqlite3.connect(path + f'/data/{email_user}/{email_user}.db')
curseur = bdd.cursor()
curseur.execute("SELECT name FROM themes")
themes = [i[0] for i in curseur.fetchall()]
print(themes)
for i in themes:
    #self.cb_themes.addItems(i)
print(i)
bdd.close()
le print(themes) affiche bien
['TOUT', 'PROGRAMMATION', 'RECETTES']
le print(i)
TOUT

PROGRAMMATION

RECETTES

mais quand je décommente self.cb... je n'arrive pas à ajouter la liste theme. L'erreur :
AttributeError: 'str' object has no attribute 'cb_themes'


Vous avez une idée ?


Belles fêtes de fin d'année à tous !!

Pascal

Thibault houdon

Mentor

Bonjour Pascal,

Est-il possible de voir un peu plus de votre script?


L'erreur indique que self est une chaîne de caractères (str), vous l'avez donc probablement écrasé ou modifier à un autre endroit du script.

Merci Thibault ,

Voilà ce que j'ai fait.


from ui.PagePSnippets import Ui_Form

path = os.path.dirname(os.path.abspath(sys.argv[0]))

class MaPageP(QWidget, Ui_Form):
    def __init__(self):
        super(MaPageP, self).__init__()
        self.setupUi(self)
        self.btn_Logbutton_go()         # La page log est lancée 
def btn_Logbutton_go(self):
    self.MsgSnippets.setText('OK')
    self.PageLog = page_login.MaPageLogin()
    PSrcSize = QScreen.availableGeometry(QApplication.primaryScreen())
    frmX = (PSrcSize.width() - self.PageLog.width()) / 2
    frmY = (PSrcSize.height() - self.PageLog.height()) / 2
    self.PageLog.move(frmX, frmY)
    self.PageLog.show()

# une fois que le log est validé, le chargement est lancé

def Chargement(self, email_user):
  if os.path.isfile(path + f'/data/{email_user}/{email_user}.db'):
      # la base existe Chargement
      bdd = sqlite3.connect(path + f'/data/{email_user}/{email_user}.db')
      curseur = bdd.cursor()
      curseur.execute("SELECT name FROM themes")
      themes = [i[0] for i in curseur.fetchall()]
      print(themes)
      for i in themes:
          self.cb_themes.addItems(i)
          print(i)

bdd.close()

Je pense que mon erreur vient de l'appel à la méthode Chargement dans ma page login

page_main.MaPageP.Chargement(self, email_user)
MaPageLogin.close(self)

Thibault houdon

Mentor

Bonjour Pascal,


Effectivement, vous n'utilisez en fait pas correctement l'orienté objet.


Actuellement vous utilisez la méthode Chargement directement depuis la classe et non depuis une instance.


Avez-vous visionné la formation sur l'orienté objet ?

Merci Thibault, Je l'ai déjà regardée mais je vais revoir cela.

Belles fêtes de fin d'année à tous !!


Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.