使用tkinter Scale选择奇数值

时间:2013-12-20 19:17:50

标签: python tkinter

我正在尝试使用Tkinter.Scale仅选择奇数值(1,3,5,7 ...)。我尝试使用:

tk.Scale(top,variable = scalevar,from_=1,to_=10,\
     resolution = 2,length = 400, takefocus = 1, orient = tk.HORIZONTAL)

但是这给了我一个从值 2 而不是 1 开始的比例尺。 我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:2)

嗯,这似乎是文件 tkScale.c 中的 Tk 中的错误,您可以阅读here,错误报告是{{ 3}}

答案 1 :(得分:2)

可以总是构建一个辅助函数来纠正输入。

我制作了一个示例脚本来演示:

import Tkinter as tk
root = tk.Tk()
past = 1
def fix(n):
    global past
    n = int(n)
    if not n % 2:
        scale.set(n+1 if n > past else n-1)
        past = scale.get()
scale = tk.Scale(from_=1, to_=9, command=fix, orient=tk.HORIZONTAL)
scale.grid()
root.mainloop()

按照您想要的奇数计数,只使用函数fix将输入显式设置为奇数。

您需要past变量来确定比例是递增还是递减 如果n > past,则比例递增。因此,该功能可以向前设定比例 如果n < past,则缩放比例。因此,该函数将缩放设置回来。

我承认这有点像黑客,但它应该适合你。

答案 2 :(得分:0)

删除resolution=2并添加tickinterval=2。其他一切都应该没问题。