我正在尝试使用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 开始的比例尺。 我在这里错过了什么吗?
答案 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
。其他一切都应该没问题。