'无功'是这个函数的无效关键字参数? (Tkinter和Python)

时间:2013-07-09 22:15:00

标签: python user-interface tkinter

我在更新tkinter中的标签时遇到问题。我查看了我可以在这个错误上找到的所有其他问题,但没有一个与我的情况真正相关。无论如何,这是我的代码:

var = 100

v = StringVar()
v.set(str(var))
varLabel=Label(app, textvariable=v).grid(row=0)

#this is where i update my label
#also, this is where i get the error
v.set(str(var = var - dictionary[number]))

错误说:

'var' is an invalid keyword argument for this function

知道我做错了吗?

感谢

3 个答案:

答案 0 :(得分:4)

你试图一次做太多事情。

试试这个

var = var - dictionary[number]
v.set(str(var))

OR

var = str(var - dictionary[number])
v.set(var)

答案 1 :(得分:3)

该错误表示str() callable不接受var关键字参数。您使用的语法通常用于关键字参数。

单独分配:

var = var - dictionary[number]
v.set(str(var))

答案 2 :(得分:1)

错误在于:

v.set(str(var = var - dictionary[number]))

我认为你期待翻译计算var - dictionary[number];将该值分配给var;然后将var的值传递给str()函数作为第一个参数。

第一部分确实有效 - 解释器 计算var - dictionary[number]。但是,它不是将该值放入var,而是将该值作为名为str的参数传递给var函数。因为字符串函数不期望名为var的参数,所以会得到您看到的错误。

这是一个快速的iPython解释器会话,显示了这一点。

In [1]: def func1(var):
   ...:     print var
   ...:

In [2]: def func2(notvar):
   ...:     print notvar
   ...:

In [3]: var=12

In [4]: func1(var=var+3)
15

In [5]: func2(var=var+3)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-7e6ea7fc32e9> in <module>()
----> 1 func2(var=var+3)

TypeError: func2() got an unexpected keyword argument 'var'

In [6]:print var
12

你可以看到func1,它确实期望一个名为var的参数,处理这个问题。 func2,它不期望一个名为var的参数,抛出一个关于unexpected关键字的TypeError。 var的值不变。