'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 без изменений.

Другие вопросы по тегам