使用tkinter切换按钮文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用tkinter切换按钮文本相关的知识,希望对你有一定的参考价值。
我是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一个默认值,然后每次按下按钮时更改它。为什么不起作用?
答案
您需要引用全局变量bt_text,因为在函数“ switcher”中,您将访问未初始化的局部变量。您可以这样做:
from tkinter import *
bt_text = "A"
root = Tk()
def switcher():
global bt_text
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()
以上是关于使用tkinter切换按钮文本的主要内容,如果未能解决你的问题,请参考以下文章