es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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é?

Tags:  ,

Answer

  1. Avatar for 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ínea party_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ón find_account_no() debe tomar un argumento posicional para recibir este valor.

Comments are closed.