Tkinter滑块与分辨率大于1时的浮点数
我该怎么做才能在分辨率大于1的时候从Scale中获取浮点数值?如果我把分辨率设置在1以下,比如0.9,Scale就会给我浮点数。但如果设置在1以上,我得到的全是整数。
示例代码:
from tkinter import *
root = Tk()
var = DoubleVar()
scale = Scale(root, variable=var, resolution=3.4)
scale.pack()
label = Label(root, textvariable=var)
label.pack()
root.mainloop()
我在Windows 7上使用的是64位的Python 3.4.1。
1 个回答
3
关于Scale()控件的视觉部分的问题
DoubleVar()
这个东西不能控制 Scale()
的显示效果(比如小数点后有多少位),不过它的模型部分是正确的(虽然看不见,但可以通过 aScaleINSTANCE.get()
来查看)。
一个解决方法的示例:
from tkinter import * # python 3+
root = Tk()
varAsTxt = StringVar() # an MVC-trick an indirect value-holder
aScale = Scale( root,
variable = varAsTxt, # MVC-Model-Part value holder
from_ = -10.0, # MVC-Model-Part value-min-limit
to = 10.0, # MVC-Model-Part value-max-limit
length = 600, # MVC-Visual-Part layout geometry [px]
digits = 4, # MVC-Visual-Part presentation trick
resolution = 0.23 # MVC-Controller-Part stepping
)
aScale.pack()
root.lift()