问题描述
我希望能够动态调整下方浮点数值旋转框 (spin1
) 的增量。为此,我创建了第二个旋转框 (spin2
),其值为 (0.1,0.01,0.001,0.0001)
,用于确定 spin1
的步长。
只要我总是从较粗的增量移动到较细的增量,这就可以正常工作。当我尝试从更精细的增量移动到更粗略的增量时它失败了,因为该值被截断为增量的精度。
使用下面的代码,这里是如何重现问题:
我希望在 0.11
中看到值 spin1
,但我看到的是 0.1
。为什么会发生这种情况,我该如何解决?
from tkinter import Tk,SpinBox
def update():
spin1['increment'] = float(spin2.get())
window = Tk()
spin1 = SpinBox(window,from_=0.0,to=10.0,increment=0.1)
spin2 = SpinBox(window,values=(0.1,0.0001),command=update)
spin1.pack()
spin2.pack()
window.mainloop()
补充观察:
- 微调器总是截断值而不是四舍五入。因此,如果在步骤 3 中将
spin1
设置为2.6
,最终结果仍将是0.1
,而不是0.2
。
解决方法
您可以将 format="%.4f"
(基于 0.0001
中 spin2
的最大小数点)添加到 spin1
:
spin1 = Spinbox(window,from_=0.0,to=10.0,increment=0.1,format="%.4f")