Python Tkinter分辨率大于时缩放和浮动>;1.

Python Tkinter分辨率大于时缩放和浮动>;1.,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,当分辨率高于1时,如何从缩放中获取浮点值?如果我将分辨率设置为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.mainl

当分辨率高于1时,如何从缩放中获取浮点值?如果我将分辨率设置为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上使用的是Python3.4.1 64位。

Scale()小部件MVC可视部件有问题
DoubleVar()
不允许控制
Scale()
的UI显示(可视部分)(小数点后的深度),而模型部分保持正确(虽然隐藏,但可能通过
aScaleINSTANCE.get()
进行检查)

解决方案模型:
实际上,只需将
digits=3
添加到问题中的刻度即可,无需更改为StringVar。@fhdrsdg没有那么容易<代码>数字本身不固定额外的
比例
小部件MVC内部依赖项([px]
长度
vs.(
)范围除以
分辨率
步骤)。如果您尝试将6位小数和5位小数同时显示为小部件值
分辨率
-步进,则必须有一个[后处理]代理值持有者。您显然比我更了解MVC,但当我查看问题中的代码时,将
DoubleVar
更改为
StringVar
没有任何作用,但将
digits=3
添加到量表中正好给出了预期用途。(我能理解3并不总是正确的数字,它应该是最大数的位数,+1代表十进制数。但我猜你例子中的4也是如此。)@fhdrsdg我的例子刚刚打开了潘多拉盒子
digits=4
有助于看出它并不能单独解决一组相互关联的问题(如果将其作为唯一的步骤)。
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()