Python - cargar valores a combobox

   
Vista:

cargar valores a combobox

Publicado por argotan (4 intervenciones) el 09/09/2012 00:39:08
Hola a todos, esto empezando en con python y con pyqt (para el entorno grafico). Entre un manual de python y bastantes ejemplo de pyqt usando qdesigner. Pero no consigo encontrar dos ejemplo con qcombox.

ejemplo 1:
utilizando el qdesigner, añado un qcombobox (ademas de otros cosas), le añado los item que necesito que salgan. El archivo ui lo convierto a py, lo importo. a partir de aqui es donde no he conseguido ningun ejemplo. Que tipo de conexion tengo que poner en el designer, para cargar el valor eleguido en una variable

ejemplo 2:
utilizando el qdesigner, añado un qcombobox (ademas de otros cosas), no añado los item. El archivo ui lo convierto a py, lo importo. a partir de aqui es donde no he conseguido ningun ejemplo. Que tipo de conexion tengo que poner en el designer, para cargar los item desde una lista externa y cargar el valor eleguido en una variable
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

cargar valores a combobox

Publicado por wenceslao (23 intervenciones) el 05/10/2012 16:37:58
ok, yo tambien soy nuevo en esto de python, pero un amigo me enseño a cargar datos a un combo, partiendo de una consulta a la base de datos, la cual la guardo en una lista y luego puedo añadirla al objeto, espero te sirva:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
self.llenarCombo()#declaro antes la funcion
 
    def llenarCombo(self):
 
        db=MySQLdb.connect(host='localhost',user='root',passwd='clave',db = 'prueba')
        cursor = db.cursor()
        sql = cursor.execute("SELECT nit,nombre FROM  proveedor   ")
        registro  = cursor.fetchall()
        print registro# con esto miro que se se hizo la carga a la lista
 
        i = 0
        while i < len(registro):
            #self.provedor.addItem(registro[i][0]+' - '+registro[i][1])
            self.provedor.addItem(registro[i][1])
            i = i + 1
            self.provedor.setCurrentIndex(-1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cargar valores a combobox

Publicado por argotan (4 intervenciones) el 05/10/2012 20:32:39
Gracias por contestar. He seguido tu ejemplo, yo he utilizado una bbdd SQlite. he creado con el designer una ventana en blanco, con un combox que le he llamado proveedor. Pero al introducir tu codigo me da error (te dejo salida de la terminal)
1
2
3
4
5
6
7
8
9
10
11
12
spartero@Portatil:~/Escritorio/proyecto python/combox$ python carga.py
[(u'hola me llamo jesus',), (u'hola me llamo antonio',), (u'prueba de insercion',)]
Traceback (most recent call last):
  File "carga.py", line 52, in <module>
    principal()
  File "carga.py", line 17, in __init__
    self.setupUI()
  File "carga.py", line 28, in setupUI
    self.llenarcombo()
  File "carga.py", line 40, in llenarcombo
    self.proveedor.addItem(lista[i])
AttributeError: 'principal' object has no attribute 'proveedor'


Tambien dejo el programa que he realizado:
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
import sys
import sqlite3
from PyQt4 import QtCore, QtGui
 
#importamos la interface del archivo creado
from ventana import Ui_ventana
 
#creamos una clase que contega la interface
class principal (QtGui.QMainWindow):
 
 
#Cargamos la interface grafica
	def __init__(self):
		self.setupUI()
		self.show()
		sys.exit(self.app.exec_())
 
#Ensenamos la interface grafica al usuario
	def setupUI(self):
		self.app=QtGui.QApplication(sys.argv)
		QtGui.QMainWindow.__init__(self)
		self.venta=Ui_ventana()
		self.venta.setupUi(self)
 
		self.llenarcombo()
 
	def llenarcombo(self):
		conexion = sqlite3.connect('roll.sqlite')
		cursor = conexion.cursor()
		cursor.execute('SELECT texto FROM rss')
		lista = cursor.fetchall()
		print lista
 
		i = 0
		while i < len(lista):
		#	self.proveedor.addItem(lista[i][0]+' - '+lista[i][1])
			self.proveedor.addItem(lista[i])
			i = i + 1
			self.proveedor.setCurrentIndex(-1)
 
 
# finalizamos el programa
if __name__ == '__main__':
	principal()


¿Que es lo que estoy haciendo mal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cargar valores a combobox

Publicado por wenceslao (23 intervenciones) el 10/10/2012 18:36:17
revisando tu codigo, por ninguna parte veo que hallas declarado un campo con el nombre proveedor, que es el combo donde se muestra el array, ademas veo que no estas traduciendo el formulario que se hace con qtdesigner, con el comando pyuci4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cargar valores a combobox

Publicado por argotan (4 intervenciones) el 04/11/2012 22:24:50
Llevo un tiempo desconectado y vuelvo a retomar mi pequeño proyecto. Estoy un poco perdido, como declaro el campo "proveedor"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cargar valores a combobox

Publicado por argotan (4 intervenciones) el 05/11/2012 15:25:10
Ayer estaba tonto, ya lo he conseguido. Pero como cargo en una variable lo seleccionado en el combobox
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cargar valores a combobox

Publicado por wenceslao (23 intervenciones) el 06/11/2012 13:57:49
ok, yo generalmente cargo el valor del combo a una variable temporal asi:

h = self.provedor.currentText()
donde h es la auxiliar que recibe el contenido del combo seleccionado, ya despues tu veras como insertas ese resultado bien sea en la base de datos o en un arreglo.


suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar