Переключить текст кнопки с помощью tkinter - PullRequest
0 голосов
/ 01 мая 2020

Я новичок в Python, и я не знаю, как установить переменную только один раз, а затем изменить ее динамически. Вот пример:

from tkinter import *
bt_text = "A"

root = Tk()

def switcher():
    print(bt_text)
    if bt_text == "A":
        bt_text = "B"
    else:
        bt_text = "A"



b=Button(root, justify = LEFT, command=switcher)
photo1=PhotoImage(file="background.gif")
b.config(image=photo1,text=bt_text, compound="center", width="50",height="20",borderwidth="0")
b.grid(row=2, column=0)

root.mainloop()

Почему я получаю ошибку?

UnboundLocalError: local variable 'bt_text' referenced before assignment

И почему ошибка не появляется в этом случае:

from tkinter import *
bt_text = "A"

root = Tk()

def switcher():
    print(bt_text)

b=Button(root, justify = LEFT, command=switcher)
photo1=PhotoImage(file="background.gif")
b.config(image=photo1,text=bt_text, compound="center", width="50",height="20",borderwidth="0")
b.grid(row=2, column=0)

root.mainloop()

Я хочу дать bt_text значение по умолчанию, а затем изменять его при каждом нажатии кнопки. Почему это не работает?

1 Ответ

1 голос
/ 01 мая 2020

Вы можете сделать это так:

from tkinter import *

root = Tk()

def switcher():
    print(bt_text.get())
    if bt_text.get() == "A":
        bt_text.set("B")
    else:
        bt_text.set("A")

bt_text = StringVar()
b = Button(root, justify=LEFT, command=switcher)
photo1 = PhotoImage(file="background.gif")
b.config(image=photo1, textvariable=bt_text, compound="center",
         width="50", height="20", borderwidth="0")

#set the text of your button
bt_text.set('A')

b.grid(row=2, column=0)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...