Tkinter滑块与分辨率大于1时的浮点数

5 投票
1 回答
6761 浏览
提问于 2025-04-18 17:39

我该怎么做才能在分辨率大于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()

撰写回答