-1

我希望能够动态调整下面的浮点数值旋转框 ( spin1) 的增量。为此,我创建了第二个旋转框 ( spin2),它具有值(0.1, 0.01, 0.001, 0.0001),它确定 的步长spin1

只要我总是从较粗的增量移动到较细的增量,这很好用。当我尝试从更精细的增量移动到更粗的增量时,它会失败,因为该值会被截断为增量的精度。

使用下面的代码,可以重现问题:

  1. 移至:spin1_0.2

    在此处输入图像描述

  2. 增量spin2,说0.01

    在此处输入图像描述

  3. 增量spin10.21

    在此处输入图像描述

  4. spin2回到0.1

    在此处输入图像描述

  5. 减量spin1

    在此处输入图像描述

我希望看到 中的值0.11spin1但我看到的是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.01, 0.001, 0.0001), command=update)
spin1.pack()
spin2.pack()
window.mainloop()

补充观察:

  • 微调器总是截断值而不是舍入。因此,如果在步骤 3spin1中设置为2.6,最终结果仍然是0.1,而不是0.2
4

1 回答 1

1

您可以将(基于fromformat="%.4f"的最大小数点)添加到:0.0001spin2spin1

spin1 = Spinbox(window, from_=0.0, to=10.0, increment=0.1, format="%.4f")
于 2021-03-10T08:53:56.787 回答