2013-07-09 44 views
1

我在更新tkinter中的标签时遇到问题。我查看了关于这个错误的所有其他问题,但没有一个与我的情况有关。总之,这里是我的代码:'var'是该函数的无效关键字参数? (Tkinter和Python)

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 

任何想法,我做错了什么?

感谢

+0

python中的'str'函数没有'var'关键字参数。 – alecxe

+0

它看起来像你来自C派生语言(C++,Java,C#,D等等)。与那些语言不同,Python中的赋值不是表达式。您不能在函数调用或时间条件或其他任何地方为变量赋值,你只能做它自己的声明。 – abarnert

回答

4

您试图同时做太多的事情。

试试这个

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

OR

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

的错误表示str()调用不采取var关键字参数。您使用的语法通常用于关键字参数。

分配分别:

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

的错误是在这里:

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

我想你期望的解释来计算var - dictionary[number];将该值分配到var;然后将var的值作为第一个参数传递给str()函数。

第一部分确实有效 - 译员确实计算var - dictionary[number]。但是,不是将该值放入var,而是将该值作为名为var的参数传递给str函数。由于字符串函数不期望名为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的参数,引发一个关于意外关键字的TypeError。 var的值不变。

相关问题