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

问题描述 投票:0回答:1

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

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

如果我将text设置为“ Hi”,那很好,但是每当我添加textvariable时,它就会中断并且在按钮本身上不显示文本标签。

同时添加两个在tkinter中构造按钮时,texttextvariable自变量如下所示?

来自[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作为参数。

如果我没有回答这个问题,我表示歉意,但我看不到任何地方列出它。

python user-interface button tkinter ttk
1个回答
0
投票

您没有为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()
© www.soinside.com 2019 - 2024. All rights reserved.