首页 > 解决方案 > TypeError:“CurrencyConverter”对象不可调用

问题描述

我正在尝试创建一个货币转换器并遇到了这个问题。不太确定我需要做什么才能克服它。我把所有的代码都放在这里是因为我根本不知道去哪里找问题。我是新手,因此非常感谢提供的任何帮助。

from tkinter import *
from currency_converter import CurrencyConverter

global c
c = CurrencyConverter()
#test converter
# result = c.convert(100, 'USD', 'HKD')
# print(result)
#create window
root = Tk()
root.title("EZ Currency Converter")
root.geometry("350x200")

#create currency option list
currencies = ["USD","EUR","JPY", "GBP","AUD", "CAD", "CHF","HKD","SGD", "MXN", 
"SEK", "PHP", "RUB", "HUF","LTL","MTL", "PLN", "ROL", "SIT", "SKK", 
]

def conversion(clicked, second_clicked, currency_amount):
    result= c(currency_amount, clicked, second_clicked)
    final_conversion = Label(root, text= result)
    final_conversion.grid(row=4, column=1, columnspan=2)
    

#Set what kind of variable to expect
clicked = StringVar()
clicked.set("USD")
second_clicked= StringVar()
second_clicked.set("USD")

#welcome new users
welcome = Label(root, text="Welcome to your new favorite Currency Converter")

#create the dropdown options/ input box /  button
original =OptionMenu(root, clicked, *currencies)
converted =OptionMenu(root, second_clicked, *currencies)
currency_amount= Entry(root, width=30)
convert = Button(root, text="Convert", padx=10, pady=10, command=lambda:conversion(clicked.get(),second_clicked.get(), currency_amount.get()))


#place widgets
welcome.grid(row=0, column=1, columnspan=2)
original.grid(row=1, column= 1, columnspan=1)
converted.grid(row=1, column=2, columnspan=1)
currency_amount.grid(row=2, column=1, columnspan=2)
convert.grid(row=3, column=1, columnspan=2)

root.mainloop()

标签: pythonpython-3.xobjecttkintererror-handling

解决方案


首先c定义:

c = CurrencyConverter()

然后在 中conversion,对象c被调用:

result = c(currency_amount, clicked, second_clicked)

这与以下内容相同:

result = CurrencyConverter()(currency_amount, clicked, second_clicked)

因此,当我们尝试在 object 上调用函数时出现错误c

它可能应该如下所示:

result = c.convert(currency_amount, clicked, second_clicked)

推荐阅读