使用自定义消息根据Scale的值Tkinter更新标签

时间:2017-05-26 15:01:45

标签: python tkinter

所以我的应用程序只有2个小部件,1个标签和1个刻度。

我想要做的是根据比例的值更新标签的文本,因此文本将是“Scale的值为(x)”,其中(x)是比例的值。

我在实例化2个小部件时尝试使用公共变量,但这没有帮助。有什么想法吗?

    firstLine = Frame(root)
    firstLine.pack()

    breakValue = StringVar()
    breakValue.set("Take a break, every 20 minutes")
    workTime = Label(firstLine, textvariable=breakValue)
    workTime.pack(side=self.LEFT)

    workTimeSetter = Scale(firstLine, orient="horizontal")
    workTimeSetter.pack(side=self.LEFT)
    workTimeSetter.set(20)

1 个答案:

答案 0 :(得分:1)

您可以使用command执行此操作 - 不确定这是否是最佳方法,但似乎有效:

from Tkinter import *

root = Tk()
breakValue = StringVar()

def set_label(val):
    breakValue.set("Take a break, every {} minutes".format(val))

firstLine = Frame(root)
firstLine.pack()

workTime = Label(firstLine, textvariable=breakValue)
workTime.pack(side=LEFT)

workTimeSetter = Scale(firstLine, orient="horizontal", command=set_label)
workTimeSetter.pack(side=LEFT)
workTimeSetter.set(20)

root.mainloop()

command自动接收比例的当前值,因此我们可以在我们的函数中使用它。