2016-10-25 67 views
0

我正與Python中的Tkinter Scale一起工作,並且我有一個Scale小部件的問題。我想要做的是針對Scale的某些值。Tkinter Scale - 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,也不匹配條件。

回答

1

您的類型不匹配。 value是一個字符串,不是數字類型,在Python 2中。* '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() 
+0

謝謝,我還沒有想過這個問題。 –