我寫在PythonPython:變量未正確初始化?
self._job = None
#slider
def sliderCallback(self):
if self._job:
下面的代碼,我得到這個錯誤信息
AttributeError: 'str' object has no attribute '_job'
爲什麼呢?我以爲我已經初始化之前變量...
更新 與定時器變量
import Tkinter as tk
import vtk
from time import *
from threading import *
from vtk.tk import *
from Visualization import *
from Histogram import *
from ListItem import *
class UI(tk.Frame):
def build(self, root):
#left column
self.leftFrame = tk.Frame(root, width=400, height=550, bg="black") #.grid(column=4, row=0)
self.leftFrame.pack(fill=tk.BOTH, expand=True, side=tk.LEFT)
#right column
self.rightFrame = tk.Frame(root, width=400, height=550, bg="black") #.grid(column=4, row=0)
self.rightFrame.pack(fill=tk.BOTH, expand=True, side=tk.RIGHT)
#self.rightBottomFrame = tk.Frame(rightFrame, width=400, height=550, bg="red") #.grid(column=4, row=0)
#visualization
self.vis = Visualization(self.rightFrame, 400, 350, tk.RIGHT)
#self.vis.updateContourValue(400)
#left column
self.middleFrame = tk.Frame(root, width=400, height=550, bg="black") #.grid(column=0, columnspan=4, row=0)
self.middleFrame.pack(fill=tk.Y, expand=True)
#isosurfaces list
def addItem(color, volume, surface):
listitem = ListItem(self.listFrame, color, volume, surface)
self.listFrame = tk.Frame(self.middleFrame, width=400, height=500, bg="black") #.grid(column=0, columnspan=4, row=0)
self.listFrame.pack(fill=tk.BOTH, expand=True, side=tk.TOP)
addItem("#243", self.vis.getVolume(), self.vis.getSurface())
#preview
self.preview = Visualization(self.middleFrame, 200, 200, tk.BOTTOM)
#self.preview.updateContourValue(1500)
#histogram
self.histFrame = Histogram(self.leftFrame, 400, 400, tk.TOP, self.preview.getData())
#slider
def updateValue(self):
self.preview.updateContourValue(float(self.slider.get()))
print "updated value"
self.timer = Timer(5.0, updateValue)
def sliderCallback(self):
self.timer.cancel()
self.timer.start() # after 30 seconds, "hello, world" will be printed
#if self._job:
#root.after_cancel(self._job)
#print "remove it"
#self._job = root.after(500, self.updateValue)
#def updateValue(value):
#print('horizontal: {v}'.format(v=value))
self.slider = tk.Scale(self.leftFrame, from_=0, to=256, orient=tk.HORIZONTAL, command=sliderCallback) #.grid(column=0, columnspan=3, row=1)
self.slider.pack(in_=self.leftFrame, fill=tk.X)
self.slider.set(200)
#add Isosurface button
def addIso():
addItem("#243", self.vis.getVolume(), self.vis.getSurface())
self.addButton = tk.Button(self.leftFrame, text="Add", command=addIso) #.grid(column=3, row=1)
self.addButton.pack(in_=self.leftFrame, side="right", pady=2)
你能展示完整的類定義嗎? – 2010-10-22 11:04:36
此代碼是方法的一部分嗎?什麼是上下文? – 2010-10-22 11:05:03
@Felix Kling它是一個班級 – aneuryzm 2010-10-22 11:11:00