我的python程序中有一个tk滑块,每当我移动它时,我都试图获得它的值。程序确实会读出滑块的初始值,但这就是读出的全部内容。
这是我的代码:
valuelist[50, 100, 150, 200]
class MainApp(Frame):
def valuecheck(val, self, scale):
scalepic = scale
print scalepic.get()
def createControls(self):
scalepic = Scale(self, from_=min(valuelist), to=max(valuelist), resolution = 25, orient=HORIZONTAL)
scalepic.set(100)
scalepic.configure(command = self.valuecheck(val, scalepic))
scalepic.pack()
def __init__(self, parent):
Frame.__init__(self, parent, width = 800, height = 600)
self.pack()
self.createControls()
我尝试将其添加到valuecheck的正文中:
newval = min(valueList, key=lambda x:abs(x-float(val)))
scalepic.set(newval)
print newval
并且在定义scalepic时摆脱了分辨率选项。
我还尝试将scalepic.get()作为val的参数传递。
我也尝试在值检查中删除val作为参数
我还应该尝试什么?
最佳答案
不要将功能分配给command
。使用lambda
。
scalepic.configure(command = lambda :self.valuecheck(scalepic))
还要编辑您的函数:
def valuecheck(self, scale):
因为不需要
val
。