La llamada a la función no está funcionando en el widget optionmenu de Python.
Importar el módulo
from tkinter import *
import csv
import pandas as pd
Crear objeto
root = Tk()
def find_account_no():
with open(‘PartyNames.csv’, newline=”) as f:
reader = csv.reader(f)
parties = []
parties.extend(reader)
global account_number_var
for i in parties:
if(i[0] == party_name_var):
account_number_var = i[1]
print(account_number_var)
else:
continue
return(account_number_var)
Ajustar tamaño
root.geometry(“1361×768″)
root.state(‘zoomed’)
with open(‘PartyNames.csv’, newline=”) as f:
reader = csv.reader(f)
party_names = []
party_names.extend(reader)
global party_name_var
party_name_var = StringVar()
party_name_var.set(“Seleccione el nombre del partido”)
Label(root, text=’Nombre del partido’).grid(row=0,column=0)
party_name_list = [” “.join(row) for row in party_names]
party_name = OptionMenu(root, party_name_var, *party_name_list, command=find_account_no)
party_name.grid(row=0,column=1)
Label(root, text=’Número de cuenta’).grid(row=1,column=0)
global account_number
account_number = Entry(root)
account_number.grid(row=1, column=1)
Ejecutar tkinter
root.mainloop()
Este es el código. En la línea 33 estoy llamando a la función find_account_no
pero está produciendo este error.
Excepción en la devolución de llamada de Tkinter
Rastreo de pila (última llamada más reciente):
Archivo “C:\Users\DELL\AppData\Local\Programs\Python\Python38\lib\tkinter__init__.py”, línea 1883, in call
return self.func(*args)
Archivo “C:\Users\DELL\AppData\Local\Programs\Python\Python38\lib\tkinter__init__.py”, línea 3943, in call
self.__callback(self.__value, *args)
TypeError: find_account_no() toma 0 argumentos posicionales pero se dio 1
¿Por qué?
davy.ai
El error está ocurriendo porque la función
find_account_no()
se está llamando con un argumento, pero no está definida para tomar ningún argumento. La líneaparty_name = OptionMenu(root, party_name_var, *party_name_list,command=find_account_no)
especifica que la función debe ser llamada cuando cambie el menú desplegable, y el valor seleccionado debe ser pasado como argumento a la función. Para solucionar el error, la funciónfind_account_no()
debe tomar un argumento posicional para recibir este valor.