代码之家  ›  专栏  ›  技术社区  ›  GeeTransit

为什么tkinter scale小部件需要tkinter变量

  •  2
  • GeeTransit  · 技术社区  · 6 年前

    scale = tk.Scale(root, from_ = 1, to = 100) # makes scale without variable
    scaleValue = scale.get() # sets value to scale
    

    一、 但是,我们需要一种方法来实时设置一个变量,并且每次标度值都发生变化。有没有一种方法可以让它在不需要不断重置的情况下工作 scaleValue scale.get() ?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Mike - SMT    6 年前

    如果你用的是 IntVar() 要跟踪该值,您可以看到它是自动更新的功能,将检查当前值。

    如果希望值以浮点形式显示和返回,可以使用 DoubleVar() resolution=0.01 作为Scale小部件中的参数。

    import tkinter as tk
    
    class Example(tk.Tk):
        def __init__(self):
            super().__init__()
            self.int_var = tk.IntVar()
            self.scale = tk.Scale(self, from_=1, to=100, variable=self.int_var)
            self.scale.pack()
    
            tk.Button(self, text="Check Scale", command=self.check_scale).pack()
    
        def check_scale(self):
            print(self.int_var.get())
    
    
    if __name__ == "__main__":
        Example().mainloop()
    

    结果:

    enter image description here

    例如,使用 您可以这样做:

    import tkinter as tk
    
    class Example(tk.Tk):
        def __init__(self):
            super().__init__()
            self.dou_var = tk.DoubleVar()
            self.scale = tk.Scale(self, from_=1, to=100, resolution=0.01, variable=self.dou_var)
            self.scale.pack()
    
            tk.Button(self, text="Check Scale", command=self.check_scale).pack()
    
        def check_scale(self):
            print(self.dou_var.get())
    
    
    if __name__ == "__main__":
        Example().mainloop()
    

    结果:

    enter image description here

        2
  •  1
  •   GeeTransit    6 年前

    通过使用 variable = tk.DoubleVar() variable 当发生变化时。

    scaleVar = tk.DoubleVar
    scale = tk.Scale(
        root,
        from_ = 1,
        to = 100,
        variable = scaleVar    # makes scale with updating variable
    )