具有非整数分辨率的Tkinter Scale小部件

时间:2016-04-25 21:10:36

标签: python tkinter

我正在尝试将Tk.Scale小部件添加到我的应用程序中,但是我在将非整数值设置为resolution参数时遇到问题。如果我将整数值传递给Scale构造函数,它可以正常工作,但是对于任何非整数值(比如0.1),我的缩放小部件不会移动。它出现在正确的位置,看起来很好,但不会回应我试图移动它。

以下是与创建缩放小部件相关的代码:

    self.sliderValue = Tk.DoubleVar()
    self.slider = Tk.Scale(self.frame,
                           from_=float(self.lowerValue.get()),
                           to=float(self.upperValue.get()),
                           orient=Tk.HORIZONTAL,
                           length=180,
                           variable=self.sliderValue,
                           resolution=0.1, # Here is the problem
                           command=self.sliderMoved)

问题是我无法在我的应用程序之外重现此问题。换句话说,如果我只创建一个带有一个缩放小部件的简单窗口,它就可以使用任何分辨率值。所以似乎问题隐藏在这个构造函数调用之外的某个地方,但我无法弄清楚在哪里。可能有人有同样的问题,可以告诉我应该检查什么。

增加: 可能是重要的:在独立(工作)情况下,滑块上方的值为“1.0”格式(以点为分隔符),在我的应用程序中,它为“1,0”格式(逗号为分隔符)。可能会出现某种类型/格式不匹配的情况。

增加2:

这是最小的例子:

import Tkinter as Tk
from pylab import *

# cla()  # if you uncomment these two lines,
# clf()  # scale will break for non-int resolutions

root = Tk.Tk()

var = Tk.DoubleVar()
scale = Tk.Scale(root, from_=6.0, to=8.5, variable = var,
                resolution=0.1, orient=Tk.HORIZONTAL)
scale.grid(column=0, row=0, columnspan=3)

root.mainloop()

1 个答案:

答案 0 :(得分:0)

我刚刚更新到Ubuntu 16.04,似乎这个问题不再出现了(Python 2.7.11 +)。