按钮标签 - 文本与文本变量

Button Label - text vs textvariable

TTK 按钮:文本与文本变量 我正在尝试将按钮标签文本默认设置为 "Hi",然后单击它,将其文本更改为 "Hello"

我尝试了多种方法来更改文本。

如果我设置 text = "Hi" 没问题,但每当我添加 textvariable 时,它就会中断并在按钮本身上不显示文本标签。

同时添加 texttextvariable 在 tkinter 中构造按钮时的参数,如下所示?

来自 Python 使用 Tkinter 进行 GUI 编程 by Alan D. Moore

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()