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

GUI Python Discussion :

qtableWidget vers un fichier csv


Sujet :

GUI Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 17
    Points
    17
    Par défaut qtableWidget vers un fichier csv
    bonsoir à tous

    comment exporter un qtableWidget vers un fichier csv

    Nom : save.PNG
Affichages : 1081
Taille : 36,3 Ko

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai modifié le code que je t'ai déjà donné, en ajoutant l'enregistrement du contenu du QTableWidget dans un fichier csv:

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #! /usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    import csv
     
    ##############################################################################
    class MainWindow(QtWidgets.QMainWindow):
     
        #=========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
            self.resize(600, 250)
     
            # on crée un QTableWidget 5x5
            self.tableWidget = QtWidgets.QTableWidget(self)
            self.tableWidget.setRowCount(5)
            self.tableWidget.setColumnCount(5)
     
            # on remplit les cases avec des QTableWidgetItem
            for row in range(0, self.tableWidget.rowCount()):
                for col in range(0, self.tableWidget.columnCount()):
                    item = QtWidgets.QTableWidgetItem("{}x{}".format(row, col))
                    self.tableWidget.setItem(row, col, item)
     
            # chaque changement de valeur des cases lancera la méthode "changedata"
            self.tableWidget.itemChanged.connect(self.changedata)                
     
            # on positionne le QTableWidget dans la fenêtre QMainWindow
            self.setCentralWidget(QtWidgets.QFrame())
            layout = QtWidgets.QGridLayout()
            layout.addWidget(self.tableWidget, 0, 0)
            self.centralWidget().setLayout(layout)
     
        #=========================================================================
        def changedata(self, item):
            """méthode lancée à chaque modification du contenu d'une case
            """
            # ligne et colonne de la case ayant lancé la méthode
            row = item.row()
            col = item.column()
            # récup de la valeur modifiée
            valeur = self.tableWidget.item(row, col).text().strip()
            # affichage de la nouvelle valeur de la case [row, col]
            QtWidgets.QMessageBox.information(self, 
                "Modification", 
                "Case: [{},{}]   Nouvelle valeur: {}".format(row, col, valeur)
                )
     
        #=========================================================================
        def sauvecsv(self, fichiercsv):
            """Lit le QTableWidget et enregistre son contenu dans un fichier csv
            """
            with open(fichiercsv, 'w', newline='') as csvfile:
                csvwriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)
                for row in range(0, self.tableWidget.rowCount()):
                    ligne = []
                    for col in range(0, self.tableWidget.columnCount()):
                        valeurcase = self.tableWidget.item(row, col).text().strip()
                        ligne.append(valeurcase)
                    csvwriter.writerow(ligne)
     
        #=========================================================================
        def keyPressEvent(self, event):
            """Interception des touches reçues du clavier
            """
            if event.key()==QtCore.Qt.Key_S and (event.modifiers() & QtCore.Qt.AltModifier):
                # on a tapé Alt-S au clavier
                self.sauvecsv("monfichier.csv") # => enregistrement des données
                event.accept()
            else:
                event.ignore() # transmission du QEvent à l'ancêtre
     
    ##############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
    J'ai rempli les cases avec un texte du genre "1x1" (numéro de ligne x numéro de colonne)

    J'ai ajouté un "keyPressEvent" pour récupérer un "Alt-S" tapé au clavier qui lancera l'enregistrement par la méthode sauvecsv

    C'est la méthode sauvecsv(fichiercsv) qui va lire le contenu du QTableWidget et l'enregistrer dans le fichier csv.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Toujours grand; mon ami merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exporter une table MySQL vers un fichier CSV
    Par sam01 dans le forum Outils
    Réponses: 2
    Dernier message: 07/08/2007, 16h44
  2. [ODBC] problème d'export du contenu de <textarea> vers un fichier csv
    Par maraly dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 27/04/2007, 09h14
  3. [Macro]exporter une table vers un fichier.csv
    Par samca dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2007, 21h25
  4. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  5. [Oracle] export vers un fichier csv
    Par illegalsene dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/10/2005, 23h58

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