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_( )) |
Partager