'var' является недопустимым аргументом ключевого слова для этой функции? (Ткинтер и Питон)
У меня проблемы с обновлением ярлыка в 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 ответа
Вы пытаетесь сделать слишком много вещей одновременно.
Попробуй это
var = var - dictionary[number]
v.set(str(var))
ИЛИ ЖЕ
var = str(var - dictionary[number])
v.set(var)
Ошибка указывает на то, что str()
вызываемый не берет var
Ключевой аргумент. Синтаксис, который вы использовали, обычно используется для аргументов ключевых слов.
Назначить отдельно:
var = var - dictionary[number]
v.set(str(var))
Ошибка здесь:
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, выдает ошибку TypeError относительно неожиданного ключевого слова. Значение var
без изменений.