1

我在更新 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

知道我做错了什么吗?

谢谢

4

3 回答 3

4

你试图一次做太多的事情。

尝试这个

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

或者

var = str(var - dictionary[number])
v.set(var)
于 2013-07-09T22:17:20.563 回答
3

该错误表明str()可调用对象不采用var关键字参数。您使用的语法通常用于关键字参数。

分别赋值:

var = var - dictionary[number]
v.set(str(var))
于 2013-07-09T22:17:18.510 回答
1

错误在这里:

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

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

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

这是一个快速的 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 的参数,抛出一个关于意外关键字的 TypeError。的值var不变。

于 2013-07-09T22:32:02.510 回答