Python tkinter 跟踪错误
Python tkinter trace error
我正在尝试为我的代码编写一个 GUI。我的计划是使用tkinter的StringVar
、DoubleVar
等来实时监控我的输入。所以我找到了 DoubleVar.trace('w', callback)
函数。但是,每次我进行更改时都会出现异常:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Anaconda2\lib\lib-tk\Tkinter.py", line 1542, in __call__
return self.func(*args)
TypeError: 'NoneType' object is not callable
我不知道出了什么问题。我正在使用 python 2.7
我的代码如下:
from Tkinter import *
class test(Frame):
def __init__(self,master):
Frame.__init__(self,master=None)
self.main_frame = Frame(master);
self.main_frame.pack()
self.testvar = DoubleVar()
self.slider_testvar = Scale(self.main_frame,variable = self.testvar,from_ = 0.2, to = 900, resolution = 0.1, orient=HORIZONTAL,length = 300)
self.slider_testvar.grid(row = 0, column = 0, columnspan = 5)
self.testvar.trace('w',self.testfun())
def testfun(self):
print(self.testvar.get())
root = Tk()
root.geometry("1024x768")
app = test(master = root)
root.mainloop()
考虑这行代码:
self.testvar.trace('w',self.testfun())
这与此完全相同:
result = self.testfun()
self.testvar.trace('w', result)
由于函数 returns None
,跟踪将尝试调用 None
,因此您得到 'NoneType' object is not callable
trace
方法需要一个 可调用 。即,对函数的引用。您需要将该行更改为以下内容(注意末尾缺少 ()
):
self.testvar.trace('w',self.testfun)
此外,您需要修改 testfun
以采用跟踪机制自动传递的参数。有关详细信息,请参阅
我正在尝试为我的代码编写一个 GUI。我的计划是使用tkinter的StringVar
、DoubleVar
等来实时监控我的输入。所以我找到了 DoubleVar.trace('w', callback)
函数。但是,每次我进行更改时都会出现异常:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Anaconda2\lib\lib-tk\Tkinter.py", line 1542, in __call__
return self.func(*args)
TypeError: 'NoneType' object is not callable
我不知道出了什么问题。我正在使用 python 2.7 我的代码如下:
from Tkinter import *
class test(Frame):
def __init__(self,master):
Frame.__init__(self,master=None)
self.main_frame = Frame(master);
self.main_frame.pack()
self.testvar = DoubleVar()
self.slider_testvar = Scale(self.main_frame,variable = self.testvar,from_ = 0.2, to = 900, resolution = 0.1, orient=HORIZONTAL,length = 300)
self.slider_testvar.grid(row = 0, column = 0, columnspan = 5)
self.testvar.trace('w',self.testfun())
def testfun(self):
print(self.testvar.get())
root = Tk()
root.geometry("1024x768")
app = test(master = root)
root.mainloop()
考虑这行代码:
self.testvar.trace('w',self.testfun())
这与此完全相同:
result = self.testfun()
self.testvar.trace('w', result)
由于函数 returns None
,跟踪将尝试调用 None
,因此您得到 'NoneType' object is not callable
trace
方法需要一个 可调用 。即,对函数的引用。您需要将该行更改为以下内容(注意末尾缺少 ()
):
self.testvar.trace('w',self.testfun)
此外,您需要修改 testfun
以采用跟踪机制自动传递的参数。有关详细信息,请参阅