Comprendo, pero el problema es que al hacer la consulta en cada ejecución de la función, siempre estás accediendo al primer registro. Deberías hacer la consulta primero, y luego iterar sobre el cursor. Una forma podría ser:
Código Python:
Ver originaldef consulta(self):
conexion=sqlite3.connect("MOTOS.S3DB")
self.cursor=conexion.cursor()
self.cursor.execute("SELECT CODIGO,PRECIO,DETALLE FROM MOTOS")
def onsiguiente(self,event, cursor):
row = self.cursor.fetchone()
self.textocodigo.SetValue(row[2])
self.textocodigo2.SetValue(row[0])
self.textocodigo3.SetValue(row[1])
Otra forma mejor es aprovechar las capacidades de SQLite:
Código Python:
Ver originaldef onsiguiente(self,event, offset):
conexion=sqlite3.connect("MOTOS.S3DB")
cursor=conexion.cursor()
cursor.execute("SELECT CODIGO,PRECIO,DETALLE FROM MOTOS LIMIT 1 OFFSET " + offset)
row = cursor.fetchone()
self.textocodigo.SetValue(row[2])
self.textocodigo2.SetValue(row[0])
self.textocodigo3.SetValue(row[1])
offset es una variable que iniciás en cero e incrementás en 1 cada vez que se llame al método. Con eso irás iterando sobre los registros de la base, sin obtener todos a la vez.
También deberías pensar en no abrir la base cada vez, a menos que la cierres tan pronto como dejes de usarla. Abrir y cerrar la base en cada llamada a la función puede ser detrimental para el rendimiento, quizás sea mejor que conserves un objeto connection y lo reuses.
Saludos.