08-12-2023, 11:22 AM
Buenos días a todos.
Tengo un desarrollo dividido en vista y modelo.
En la vista, tengo lo siguiente:
prov_combo = ttk.Combobox(pesta0, textvariable=de_proveedor)
prov_combo["values"] = proveedores.leer_id_proveedor()
Y en el modelo, la función:
def leer_id_proveedor():
cursor = base.cursor()
query = "SELECT id FROM proveedores"
cursor.execute(query)
data=[]
for row in cursor:
data.append(row[0])
return(sorted(data))
El problema que se me presenta es que, al agregar un nuevo valor al combobox, el mismo no se ve reflejado en la vista (o sea, no se refresca, no aparece el nuevo).
He probado con:
* agregar la función leer_id_proveedor() dentro y al pie de la función que uso para agregar values, para que una vez que se realice la carga, se ejecute la lectura.
* agregar un botón de actualizar que llame a leer_id_proveedor()
* hacer una llamada a la función leer_id_proveedor() dentro de la vista, de manera suelta, para ver si lograba que se ejecute en loop.
pero ninguna de estas opciones me dieron resultado.
Quiero evitar que el usuario tenga que cerrar y volver a abrir el programa para poder seleccionar el valor nuevo dentro del combo. ¿Hay manera de hacerlo?
Tengo un desarrollo dividido en vista y modelo.
En la vista, tengo lo siguiente:
prov_combo = ttk.Combobox(pesta0, textvariable=de_proveedor)
prov_combo["values"] = proveedores.leer_id_proveedor()
Y en el modelo, la función:
def leer_id_proveedor():
cursor = base.cursor()
query = "SELECT id FROM proveedores"
cursor.execute(query)
data=[]
for row in cursor:
data.append(row[0])
return(sorted(data))
El problema que se me presenta es que, al agregar un nuevo valor al combobox, el mismo no se ve reflejado en la vista (o sea, no se refresca, no aparece el nuevo).
He probado con:
* agregar la función leer_id_proveedor() dentro y al pie de la función que uso para agregar values, para que una vez que se realice la carga, se ejecute la lectura.
* agregar un botón de actualizar que llame a leer_id_proveedor()
* hacer una llamada a la función leer_id_proveedor() dentro de la vista, de manera suelta, para ver si lograba que se ejecute en loop.
pero ninguna de estas opciones me dieron resultado.
Quiero evitar que el usuario tenga que cerrar y volver a abrir el programa para poder seleccionar el valor nuevo dentro del combo. ¿Hay manera de hacerlo?