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 :
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_()
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
 
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'
Et voici les caractéristiques de ma liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<type 'list'>
[(None,), ('test1',), ('test3',), ('test2',)]
 
<type 'tuple'> 
(test1,)
Dans ma liste j'ai des turples. Je ne comprend pas pourquoi, je n'obtiens pas des strings ?

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