Buenas, estoy haciendo un desarrollo en donde vista y modelo van separados, y no logro que la función asociada al <<ComboboxSelected>> se ejecute.
Copio aquí debajo el código.
Vista:
titulo_label = Label(pesta0, text="Título:", background="pink", font=("Courier", 10, "bold"))
titulo_label.place(x=10, y=93)
titulo_entry = ttk.Combobox(pesta0, textvariable=titulo, background="plum2")
titulo_entry['values']=modelo.combo_input()
titulo_entry.bind("<<ComboboxSelected>>", modelo.consxtit(titulo.get(), isbn))
titulo_entry.place(x=69, y=96, width=618)
Modelo:
def combo_input():
cursor=base.cursor()
query = ('SELECT título FROM ejemplares')
cursor.execute(query)
data=[]
for rows in cursor:
data.append(rows[0])
print(sorted(data))
return(sorted(data))
def consxtit(titulo, isbn):
cursor=base.cursor()
data = (titulo, )
sql = ('SELECT isbn FROM ejemplares WHERE título=?')
cursor.execute(sql, data)
result = cursor.fetchone()
print(result)
if result is not None:
isbn.set(result)
Básicamente se trata de que al elegir un título, me muestre el isbn. La función combo_input() funciona correctamente, pero la consxtit(titulo, isbn) no hace nada. Nada de nada. Ni siquiera ejecuta el print(result) que contiene, por lo que interpreto que tengo un error en la llamada a la función desde la Vista. He probado quitando los argumentos y sólo llamando a la función, pero claro, el modelo al recibirla no recibe el argumento sobre el que debe trabajar (título). He probado utilizando una lambda, pero tampoco.
Espero me haya podido explicar y me den una mano, porque no le estoy encontrando la vuelta que de seguro es un detalle mínimo.
Saludos.
Copio aquí debajo el código.
Vista:
titulo_label = Label(pesta0, text="Título:", background="pink", font=("Courier", 10, "bold"))
titulo_label.place(x=10, y=93)
titulo_entry = ttk.Combobox(pesta0, textvariable=titulo, background="plum2")
titulo_entry['values']=modelo.combo_input()
titulo_entry.bind("<<ComboboxSelected>>", modelo.consxtit(titulo.get(), isbn))
titulo_entry.place(x=69, y=96, width=618)
Modelo:
def combo_input():
cursor=base.cursor()
query = ('SELECT título FROM ejemplares')
cursor.execute(query)
data=[]
for rows in cursor:
data.append(rows[0])
print(sorted(data))
return(sorted(data))
def consxtit(titulo, isbn):
cursor=base.cursor()
data = (titulo, )
sql = ('SELECT isbn FROM ejemplares WHERE título=?')
cursor.execute(sql, data)
result = cursor.fetchone()
print(result)
if result is not None:
isbn.set(result)
Básicamente se trata de que al elegir un título, me muestre el isbn. La función combo_input() funciona correctamente, pero la consxtit(titulo, isbn) no hace nada. Nada de nada. Ni siquiera ejecuta el print(result) que contiene, por lo que interpreto que tengo un error en la llamada a la función desde la Vista. He probado quitando los argumentos y sólo llamando a la función, pero claro, el modelo al recibirla no recibe el argumento sobre el que debe trabajar (título). He probado utilizando una lambda, pero tampoco.
Espero me haya podido explicar y me den una mano, porque no le estoy encontrando la vuelta que de seguro es un detalle mínimo.
Saludos.