Problème avec QlistView avec une base de donnée
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:
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:
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:
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