如何从Tkinter Scale传递命令到函数

时间:2016-01-08 19:48:26

标签: python tkinter

我有一个包含多个滑块的程序,需要为每个滑块运行相同的功能,但需要根据移动的滑块运行。如何告诉功能哪个滑块被移动了?

1 个答案:

答案 0 :(得分:1)

您可以像执行任何其他回调一样:使用lambdafunctools.partial来提供参数。

例如:

import tkinter as tk

class Example(tk.Frame):
    def __init__(self, root):

        tk.Frame.__init__(self, root)
        for scale in ("red", "green", "blue"):
            widget = tk.Scale(self, from_=0, to=255, orient="horizontal",
                              command=lambda value, name=scale: self.report_change(name, value))
            widget.pack()

    def report_change(self, name, value):
        print("%s changed to %s" % (name, value))


if __name__ == "__main__":
    root=tk.Tk()
    Example(root).pack(side="top", fill="both", expand=True)
    root.mainloop()