Этот код не запускается, а это значит, что мне придется угадывать, чего не хватает, и добавить его, чтобы можно было отлаживать. Так что мои комментарии могут быть неактуальными ...
Я бы не рекомендовал создавать корневое окно внутри функции.
Переменная attackUp1
создается внутри функции shop()
, которая делает ее локальной. Когда функция завершается, она собирается мусором.
Переменная attackUp1
имеет тип int
. Это природа объектов холста. Если вы хотите изменить текст кнопки, вам нужно сохранить ссылку на кнопку.
Обновление
Когда я снова смотрю на этот код, размышляя о том, почему вы создаете экземпляр Tk()
внутри функции, мне кажется, что вы, возможно, открываете новое окно. Если это так, вы должны использовать Toplevel()
. Не рекомендуется иметь более одного корневого окна: Почему не рекомендуется использовать несколько экземпляров Tk?
Что касается передачи ссылки на кнопку, это может работать:
from tkinter import *
root = Tk()
root.title("Shop")
def shop():
global attackButton
shop = Canvas (root, width = 150, height = 100, bg = "blue")
shop.pack()
attackButton = Button(shop, text="Attack Up 1\n20 coins",
command=attackIncreaser1)
attackUp1 = shop.create_window(77, 50, window=attackButton)
def attackIncreaser1():
attackButton.config(text="Not enough coins")
shop()
root.mainloop()