如何对 tkinter Scale 小部件的某些值执行操作?

How to do an action for certain values of tkinter Scale widget?

我在 Python 中使用 Tkinter,但 Scale 小部件有问题。我想做的是对某些比例值执行操作。

这是 Scale 代码的一部分:

self.scale = Scale(from_=0, to=100, tickinterval=20, orient=HORIZONTAL, command= self.scale_onChange)

def scale_onChange(self, value):
    if(value >= 10):
        print "The value is ten"

发生了一些奇怪的事情,当我 运行 脚本时,比例值为 0,但条件似乎为真并打印 "The value is ten"。此外,当我更改比例值时,即使值大于 10,也永远不会匹配条件。

您的类型不匹配。 value是字符串不是数值类型,在Python2.*中'0'大于10。感谢 Tadhg McDonald-Jensen 指出这种静默错误特定于 Python 2.*.

from Tkinter import *

def scale_onChange(value):
    print(value)
    print(type(value))
    if(value >= 10):
        print "The value is ten"

master = Tk()
scale = Scale(from_=0, to=100, tickinterval=20, orient=HORIZONTAL, command=scale_onChange)
scale.pack()

mainloop()

例如

>>> '0' >= 10
True

在 Python 3.* 你会得到一个错误:

>>> '0' >= 10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() >= int()