Bonjour à tous,
Je souhaite pour un plugin afficher dans une liste les résultats d'un requête sql et pouvoir en sélectionner une ou plusieurs lignes.
J'ai choisi d'afficher la liste de mes résultats via une QlistView et de rendre chaque résultat steckable. J'ai suivie ce tuto : http://www.pythoncentral.io/pyside-p...darditemmodel/
Pour le moment je ne suis qu'à la partie affichage. Je n'ai pas encore faire la selection des lignes.
Voici mon code :
Voici l'erreur que j'obtiens :
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 from PyQt4 import QtCore, QtGui from PyQt4.QtGui import QApplication, QItemSelectionModel, QStandardItem, QStandardItemModel import sys import psycopg2 app = QApplication(sys.argv) listView = QtGui.QListView() listView.setWindowTitle('Example List') listView.setMinimumSize(600, 400) listView.setEnabled(False) model = QStandardItemModel(listView) try: conn = psycopg2.connect("dbname='qgis_db' user='postgres' host='localhost' password='postgresql'") except Exception as e: print "I am unable to connect to the database", e cur = conn.cursor() conn.set_isolation_level(0) try: cur.execute("select pt_projname from point group by pt_projname") except psycopg2.ProgrammingError as e: print e project =cur.fetchall() print type(project) print project for i in project: # Create an item with a caption item = QStandardItem(i) # Add a checkbox to it item.setCheckable(True) # Add the item to the model model.appendRow(item) listView.setModel(model) listView.show() app.exec_()
Et voici les caractéristiques de ma liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Traceback (most recent call last): File "C:/Users/AUGU/Documents/GL/code_python/BASE/listView/test1.py", line 31, in <module> item = QStandardItem(i) TypeError: arguments did not match any overloaded call: QStandardItem(): too many arguments QStandardItem(QString): argument 1 has unexpected type 'tuple' QStandardItem(QIcon, QString): argument 1 has unexpected type 'tuple' QStandardItem(int, int columns=1): argument 1 has unexpected type 'tuple' QStandardItem(QStandardItem): argument 1 has unexpected type 'tuple'
Dans ma liste j'ai des turples. Je ne comprend pas pourquoi, je n'obtiens pas des strings ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <type 'list'> [(None,), ('test1',), ('test3',), ('test2',)] <type 'tuple'> (test1,)
Une idée pour résoudre ce problème ?
Ou une autre manière de procéder pour avoir un résultat semblable (ex: avec une combobox et l'affichage des éléments selectionnés)
Merci d'avance
Partager