Salut,

voilà mon problème...
Je cherche à faire une interface basique pour parcourir quelques enregistrements d'une table sqlite.
Quand j'appuie sur les boutons "suivant" et "precedent", les champs textes associés au champ de la table s'affichent correctement.
(exemple de table : Nom, prénom et date naissance)
Maintenant,à la place d'un champ texte 'Nom', je voudrais faire une combo reprenant tout les noms de la table.Et pouvoir selectionner un nom dans la combo egalement.
Voici mon code actuel :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
 
from pysqlite2 import dbapi2 as sqlite3
import os
import sys
from PyQt4 import QtCore,QtGui,QtSql
from untitled import Ui_MainWindow
 
NOM,PRENOM,NAISSANCE = range(3)
 
class fen(QtGui.QMainWindow,Ui_MainWindow):
 
	FIRST, PREV, NEXT, LAST = range(4)
 
	def __init__(self,parent=None):
		super(fen, self).__init__(parent)
		self.setupUi(self)		
		self.model=QtSql.QSqlRelationalTableModel(self)
		self.model.setTable("clients")
		self.model.select()
		self.mapper = QtGui.QDataWidgetMapper(self)
               self.mapper.setSubmitPolicy(QtGui.QDataWidgetMapper.ManualSubmit)
		self.mapper.setModel(self.model)
		self.mapper.setItemDelegate(QtSql.QSqlRelationalDelegate(self))	
		self.mapper.addMapping(self.lineEdit_2, NOM)
		self.mapper.addMapping(self.lineEdit_3, PRENOM)
		self.mapper.addMapping(self.lineEdit_4, NAISSANCE)
		self.mapper.toFirst()
		self.connect(self.pushButton_first, QtCore.SIGNAL("clicked()"),
		           lambda: self.saveRecord(fen.FIRST))
		self.connect(self.pushButton_prev, QtCore.SIGNAL("clicked()"),
		           lambda: self.saveRecord(fen.PREV))
		self.connect(self.pushButton_next, QtCore.SIGNAL("clicked()"),
		           lambda: self.saveRecord(fen.NEXT))
		self.connect(self.pushButton_last, QtCore.SIGNAL("clicked()"),
		           lambda: self.saveRecord(fen.LAST))
 
	def saveRecord(self, where):
	    row = self.mapper.currentIndex()
	    self.mapper.submit()
	    if where == fen.FIRST:
	        row = 0
	    elif where == fen.PREV:
	        row = 0 if row <= 1 else row - 1
	    elif where == fen.NEXT:
	        row += 1
	        if row >= self.model.rowCount():
	            row = self.model.rowCount() - 1
	    elif where == fen.LAST:
	        row = self.model.rowCount() - 1
	    self.mapper.setCurrentIndex(row)
Comment feriez-vous?

j'avais commencé en ajoutant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
  self.comboBox.setModel(self.model)
  self.comboBox.setModelColumn(NOM)
  self.mapper.addMapping(self.comboBox, NOM)
j'ai bien les données, mais quand je fais "suivant" plusieurs fois, python plante mechamment (memoire??)
j'ai un peu de mal avec ces notions de model j'avoue..

merci