2016-10-25 7 views
0

私はPythonでTkinter Scaleを使っていますが、Scaleウィジェットに問題があります。私がしたいことは、スケールの特定の値に対するアクションです。ここでTkinterスケール - Python

はスケール・コードの一部です:

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それにもかかわらず、条件は「値が10である」真と印刷思われます。また、値を変更しても、値が10より大きい場合でも、スケールの値は決して一致しません。

答えて

1

タイプが不一致です。 valueは数値型ではない文字列であり、Python 2では* '0'10より大きい。このようなサイレントエラーはPython 2に固有のものであることを指摘してくれたTadhg McDonald-Jensenに感謝します。*。

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() 

Pythonの3の

>>> '0' >= 10 
True 

*あなたはエラーを得ていると思います:

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

おかげで、私はそのことについて考えていませんでした。 –