IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

ComboBox dans une QTableWidget


Sujet :

PyQt Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 21
    Par défaut ComboBox dans une QTableWidget
    Bonjour à tous,
    Je débute en python et je cherche depuis plusieurs jours à mettre une liste déroulante dans un tableau de donnée qui est reliè à une seconde table.

    Dans l'exemple ci-dessous, j'ai une table client qui a un id_pays qui fait référence à une table pays.

    Nom : combo1.jpg
Affichages : 686
Taille : 21,5 Ko

    Je souhaite avoir une liste déroulante avec le nom des pays et pouvoir les modifier avec la combobox pour chaque client :

    Nom : combo2.jpg
Affichages : 729
Taille : 35,7 Ko

    ci-dessous mon code exemple :

    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
    52
    53
    54
    55
    56
    57
    58
    59
     
    import sys
    from PyQt5 import (QtWidgets, QtCore, QtSql)
    from PyQt5.QtWidgets import QApplication, QComboBox, QMainWindow, QWidget
    import sqlite3
     
    class ComboBoxExample(QMainWindow):
        def __init__(self):
            super().__init__()
            self.conn = sqlite3.connect("database.db")
            cursor = self.conn.cursor()
     
            QWidget.__init__(self)
            self.setWindowTitle("client")
            self.setMinimumHeight(450)
            self.setMinimumWidth(700)
     
            # Tableau client
            cursor.execute("SELECT client.id, client.name, client.id_pays, pays.nom_pays, pays.nom_pays "
                           "FROM client INNER JOIN pays ON client.id_pays = pays.id")
     
            result = cursor.fetchall()
     
            # Liste des pays pour combobox
            cursor.execute("SELECT * FROM pays")
            self.values = [row[1] for row in cursor.fetchall()]
     
            # affichage Tableau Client
            self.tableau = QtWidgets.QTableWidget(self)
            self.tableau.setGeometry(20, 100, 550, 300)
     
            # définition du tableau Client
            self.tableau.setRowCount(len(result))
            self.tableau.setColumnCount(len(result[0]))
            self.tableau.setHorizontalHeaderLabels(["id client", "client", "id pays", "pays", "pays"])
     
            # Remplissage du tableau Client avec les données de la table
            for i, row in enumerate(result):
                for j, item in enumerate(row):
                    self.combo = QComboBox()
                    self.combo.addItems(self.values)
                    self.tableau.setCellWidget(i, 4, self.combo)
                    self.tableau.setItem(i, j, QtWidgets.QTableWidgetItem(str(item)))
     
     
            # Affichage du tableau dans la fenêtre
            self.tableau.show()
            self.tableau.resizeColumnsToContents()
            self.tableau.setColumnWidth(0, 100)
            self.tableau.setColumnWidth(1, 100)
            self.tableau.setColumnWidth(2, 100)
            self.tableau.setColumnWidth(3, 100)
            self.tableau.setColumnWidth(4, 100)
            self.tableau.resizeRowsToContents()
     
    app = QApplication(sys.argv)
    combo_box_example = ComboBoxExample()
    combo_box_example.show()
    sys.exit(app.exec_())

    Merci par avance pour votre aide
    Stéphane
    Images attachées Images attachées  

Discussions similaires

  1. Variable après un ComboBox dans une boucle FOR
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/05/2007, 09h26
  2. Compiler informations de deux combobox dans une textbox
    Par thiephaine59000 dans le forum Général VBA
    Réponses: 1
    Dernier message: 14/05/2007, 17h58
  3. Combobox dans une Toolbar
    Par dug dans le forum wxWidgets
    Réponses: 2
    Dernier message: 27/03/2007, 15h15
  4. il est possible d avoir un combobox dans une MSFlexgrid ?
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 09/01/2007, 22h03
  5. [DEBUTANT] Insérer une combobox dans une jTable
    Par Geolem dans le forum Composants
    Réponses: 2
    Dernier message: 25/11/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo