我在更新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
知道我做错了吗?
感谢
答案 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
的值不变。