Python Tkinter分辨率大于时缩放和浮动>;1.
当分辨率高于1时,如何从缩放中获取浮点值?如果我将分辨率设置为1以下,例如0.9,Scale将给出浮动。大于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
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()