如何在按下按钮时更改Tkinter标签文本

时间:2015-04-23 15:50:19

标签: python button python-3.x tkinter label

我有这个代码,它意味着在按下项目按钮时更改Instruction标签的文本。它不是出于某种原因,我不完全确定原因。我尝试在press()函数中创建另一个按钮,除了不同的文本外,它们具有相同的名称和参数。

import tkinter
import Theme
import Info

Tk = tkinter.Tk()
message = 'Not pressed.'

#Sets window Options
Tk.wm_title(Info.Title)
Tk.resizable(width='FALSE', height='FALSE')
Tk.wm_geometry("%dx%d%+d%+d" % (720, 480, 0, 0))


#Method run by item button
def press():
    message = 'Button Pressed'
    Tk.update()

#item button
item = tkinter.Button(Tk, command=press).pack()

#label
Instruction = tkinter.Label(Tk, text=message, bg=Theme.GUI_hl2, font='size, 20').pack()

#Background
Tk.configure(background=Theme.GUI_bg)
Tk.mainloop()

2 个答案:

答案 0 :(得分:11)

这样做的:

message = 'Button Pressed'

不会影响标签小部件。它所做的就是将全局变量message重新分配给一个新值。

要更改标签文字,您可以使用其.config() method(也称为.configure()):

def press():
    Instruction.config(text='Button Pressed')

此外,在创建标签时,您需要在单独的行上调用pack方法:

Instruction = tkinter.Label(Tk, text=message, font='size, 20')
Instruction.pack()

否则,Instruction将被分配给None,因为这是方法的返回值。

答案 1 :(得分:1)

您可以message一个StringVar进行回调。

message = tkinter.StringVar()

message.set('Not pressed.')

您需要将message设为textvariable Instruction

Instruction = tkinter.Label(Tk, textvariable=message, font='size, 20').pack()

然后

def press():
    message.set('Button Pressed')