我知道您不需要为像这样的比例指定变量:
scale = tk.Scale(root, from_ = 1, to = 100) # makes scale without variable
scaleValue = scale.get() # sets value to scale
但是,我需要一种方法来实时设置变量,并且每次更改比例值时都要设置。有没有一种方法可以在不将scaleValue
不断重置为scale.get()
的情况下进行工作?
答案 0 :(得分:1)
通过使用variable = tk.DoubleVar()
来创建tkinter变量,它将在发生更改时自动更新variable
。
scaleVar = tk.DoubleVar
scale = tk.Scale(
root,
from_ = 1,
to = 100,
variable = scaleVar # makes scale with updating variable
)
答案 1 :(得分:1)
如果您使用类似IntVar()
之类的值来跟踪该值,则可以看到该值已使用将检查当前值的功能自动更新。
如果您希望以浮点数的形式显示并返回该值,则可以使用DoubleVar()
,然后在Scale小部件中将resolution=0.01
设置为参数。
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()
结果:
对于使用DoubleVar()
的示例,您可以执行以下操作:
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()
结果: