TTK按钮:文本与文本变量我试图将按钮标签文本默认设置为“ Hi”,然后单击它,将其文本更改为“ Hello”
我尝试了多种方法来更改文本。
如果我将text
设置为“ Hi”,那很好,但是每当我添加textvariable
时,它就会中断并且在按钮本身上不显示文本标签。
同时添加两个在tkinter中构造按钮时,text
和textvariable
自变量如下所示?
来自[Alan D.Moore的使用Tkinter进行Python GUI编程
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
tvar = tk.StringVar()
def swaptext():
if tvar.get() == 'Hi':
tvar.set('There')
else:
tvar.set('Hi')
# my_button = ttk.Button(parent, text='Hi', textvariable=tvar, command=swaptext) # BUTTON LABEL IS BLANK
my_button = ttk.Button(parent, text='Hi', command=swaptext) # WORKS, BUT NO TEXTVARIABLE TO CALL TO SWAP TEXT
my_button.pack()
root.mainloop()
我希望按钮显示出来,并且将默认的text
值设置为“ Hi”,并且立即显示“ Hi”,但实际上它开始是空白。尽管它开始是空白的,但是当我单击按钮时,它会从以下位置切换:
空白->嗨
嗨->嗨
你好->嗨(等等。)
有人可以向我指出我的默认按钮text
值和textvariable
为何做错了吗?
我找到的最接近答案的地方是:TextVariable not working,但这是关于Entry构造函数的,它们似乎没有以text
作为参数。
如果我没有回答这个问题,我表示歉意,但我看不到任何地方列出它。
您没有为StringVar
设置默认值。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
tvar = tk.StringVar(value="Hi")
def swaptext():
if tvar.get() == 'Hi':
tvar.set('There')
else:
tvar.set('Hi')
my_button = ttk.Button(root, textvariable=tvar, command=swaptext)
my_button.pack()
root.mainloop()