В Python int
объекты неизменны. Это означает, что вы никогда не сможете изменить его на месте, просто перепривязать переменную, которая ссылается на одно целое число, вместо того, чтобы ссылаться на другую.
Однако обычно вы не можете перепривязать глобальную переменную внутри функции. Любое присвоение, которое вы делаете, создает локальную переменную вместо того, чтобы связывать существующую глобальную переменную (и вы не можете прочитать старую глобальную переменную, а затем связать локальную переменную с тем же именем, область имени является локальной для всей функции, если Вы когда-либо привязываете к нему значение).
Однако Python предлагает оператор global
для изменения поведения области по умолчанию. Если вы скажете global clickCount
, тогда переменная clickCount
будет ссылаться на глобальную переменную повсюду в функции.
Итак, очевидное исправление для вашего кода - сначала удалить аргумент, передаваемый из ваших функций (которые никогда не делали ничего полезного), и вместо этого использовать оператор global
:
def setText():
addClickCount()
bk_text = "Times Clicked: " + str(clickCount)
textObject.setText(bk_text)
def addClickCount():
global clickCount
clickCount += 1
b = DirectButton(text = ("button"), scale=.05, command=setText)
Функция addClickCount
настолько коротка, что вы можете подумать о том, чтобы объединить ее с setText
, если только вы не хотите вызывать ее отдельно.