Récupérer lignes multiples qtableview python
Bonjour à tous,
je souhaite faire une traitement sqlite sur plusieurs lignes mais je n'arrive pas à récupérer une liste des données de ma colonne id.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def test_row(self):
#recherches lignes tableview
list=[]
indexes = self.ui.tableView_2.selectionModel( ).selectedRows( )
for index in sorted(indexes):
list.append(index.row( ))
print('ligne %d selectionnée' % index.row( ))
print('liste', list)
# recherche donnees table
index = self.ui.tableView_2.selectedIndexes( )[1]
donnees_table = (self.ui.tableView_2.model( ).data(index))
print("index : " + str(donnees_table)) |
merci
récupérer ligne tableview sqlite
Bonjour tyrtamos
Ci-joint le code raccourcis, j'imagine que la méthode n'est pas bonne mais j'ai du mal à comprendre la doc QT.
Code:
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 81 82 83 84 85 86
| import sqlite3
import sys
from os.path import exists
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt, qInstallMessageHandler
import numpy as np
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
if not exists("projects4.db"):
connection = sqlite3.connect("projects4.db")
cursor = connection.cursor()
cursor.execute(""" CREATE TABLE projects (A TEXT, B TEXT, C INTEGER)""")
cursor.execute("""INSERT INTO projects VALUES
('aa', 'ab','ac'),
('ba', 'bb', 'bc'),
('da', 'dc', 'dd')
""")
connection.commit()
connection.close()
class Test(QWidget):
def __init__(self):
super( ).__init__( )
# CREATION TABLE
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("projects4.db")
db.open( )
model = QSqlTableModel(None, db)
model.setTable("projects")
model.select( )
self.view = QTableView( )
self.view.setModel(model)
# CREATION BOUTON
self.button = QPushButton('Bouton ', self)
# PLACE DANS LAYOUT
layout = QVBoxLayout(self)
layout.addWidget(self.view)
layout.addWidget(self.button)
self.setLayout(layout)
self.button.clicked.connect(self.test)
# RECHERCHE DONNEES CLIC BOUTON
def test(self):
# je recupére les lignes selectionnées avec click button
list = []
indexes = self.view.selectionModel( ).selectedRows( )
for index in sorted(indexes):
list.append(index.row( ))
print('ligne %d selectionnée' % index.row( ))
print('liste', list)
# erreur item pour je recupére les donnees des lignes
for index in indexes:
row = index.row( )
col = index.column( )
item = self.view.model( ).item(row, col)
elem = item.data(Qt.DisplayRole)
print("case:", row, col, "=>", elem)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
from package.msgerreur import messagederreur
qInstallMessageHandler(messagederreur)
fenetre = Test( )
fenetre.show( )
fenetre.resize(500, 300)
sys.exit(app.exec_( )) |
encore merci