如何进行 Tkinter 标签更新?
How to make a Tkinter label update?
我有一个简单的 tkinter GUI,带有显示数字和按钮的标签。我将它设置为变量 x,当按下按钮时,x 的值增加 1。但是,当我按下按钮时,标签不会更新。我该怎么做?
from tkinter import *
x = 1
def add():
global x
x += 1
win = Tk()
label = Label(win, text=x)
label.pack()
button = Button(win, text="Increment", command=add)
button.pack()
win.mainloop()
配置标签的 text
是一次性的效果。稍后更新 int 不会更新标签。
要解决这个问题,您可以自己显式更新标签:
def add():
global x
x += 1
label.configure(text=x)
... 或者您可以像 IntVar
一样使用 tkinter variable(或者更一般地说,如果您的文本不仅仅是数字,则 StringVar
),其中 是否 更新变量时更新标签。如果这样做,请不要忘记配置 textvariable
而不是 text
。
from tkinter import *
win = Tk()
x = IntVar()
x.set(1)
def add():
x.set(x.get() + 1)
label = Label(win, textvariable=x)
label.pack()
button = Button(win, text="Increment", command=add)
button.pack()
win.mainloop()
注意在创建 IntVar
之前 创建一个 Tk()
实例,否则 tkinter 将抛出异常。
您必须通过将 command
与按钮的点击相关联来手动执行此操作。假设您希望 Label
的文本在您单击 button
时更新:
button = Button(win, text="One", command=add) # add() is called when button is clicked
现在,您定义 add
command/function 以更改标签中的文本:
def add():
global x
x += 1
label.config(text=x) # calling the method config() to change the text
我所做的是使用一个 IntVar() 和一个方法进行加减:
*outside the class body*
def plus1(self,var,l):
var.set(int(var.get())+1)
l.textvariable = var
return var.get()
*Inside the body of your class*
self.your_text = IntVar()
self.your_text.set(0)
self.l = Label(master, textvariable = (self.your_text))
self.plus_n = Button(root,text = '+',command=lambda : self.your_text.set(self.plus1(self.your_text,self.l) )
我就是这样做的,对我很有效,可能还有更优雅的方法来解决这个问题
我有一个简单的 tkinter GUI,带有显示数字和按钮的标签。我将它设置为变量 x,当按下按钮时,x 的值增加 1。但是,当我按下按钮时,标签不会更新。我该怎么做?
from tkinter import *
x = 1
def add():
global x
x += 1
win = Tk()
label = Label(win, text=x)
label.pack()
button = Button(win, text="Increment", command=add)
button.pack()
win.mainloop()
配置标签的 text
是一次性的效果。稍后更新 int 不会更新标签。
要解决这个问题,您可以自己显式更新标签:
def add():
global x
x += 1
label.configure(text=x)
... 或者您可以像 IntVar
一样使用 tkinter variable(或者更一般地说,如果您的文本不仅仅是数字,则 StringVar
),其中 是否 更新变量时更新标签。如果这样做,请不要忘记配置 textvariable
而不是 text
。
from tkinter import *
win = Tk()
x = IntVar()
x.set(1)
def add():
x.set(x.get() + 1)
label = Label(win, textvariable=x)
label.pack()
button = Button(win, text="Increment", command=add)
button.pack()
win.mainloop()
注意在创建 IntVar
之前 创建一个 Tk()
实例,否则 tkinter 将抛出异常。
您必须通过将 command
与按钮的点击相关联来手动执行此操作。假设您希望 Label
的文本在您单击 button
时更新:
button = Button(win, text="One", command=add) # add() is called when button is clicked
现在,您定义 add
command/function 以更改标签中的文本:
def add():
global x
x += 1
label.config(text=x) # calling the method config() to change the text
我所做的是使用一个 IntVar() 和一个方法进行加减:
*outside the class body*
def plus1(self,var,l):
var.set(int(var.get())+1)
l.textvariable = var
return var.get()
*Inside the body of your class*
self.your_text = IntVar()
self.your_text.set(0)
self.l = Label(master, textvariable = (self.your_text))
self.plus_n = Button(root,text = '+',command=lambda : self.your_text.set(self.plus1(self.your_text,self.l) )
我就是这样做的,对我很有效,可能还有更优雅的方法来解决这个问题