[vtkusers] Fw: Message vtkUser
Michel Audette
m.audette at aist.go.jp
Wed Dec 8 21:08:40 EST 2004
Hello everyone,
my student had the following problem with vtkTkRenderWidget. See below...
Best regards,
Michel
Michel Audette, Ph.D.,
Research Fellow, Surgical Simulation,
Surgical Assist Technology Group,
AIST,
Namiki 1-2,
Tsukuba, Japan,
305-8564.
--------------------------------------------------------
"If you think you can do it, you're right.
If you think you can't do it, you're still right."
- Henry Ford
Hello VTKuser,
I have some problems with management of many vtkTkRenderWidget.
I am developing GUI for surgical software in Python Language.
Each window of this GUI have one vtkTkRenderWidget to show 3D Objects
(One of them used the vtksliceWidget develop by Atamai).
I succeed to show one objects in one of these windows.
But if I try to open another one I get this error:
File "/usr/local/lib/python2.2/lib-tk/Tkinter.py", line 1316, in __call__
return apply(self.func, args)
File "selection.py", line 64, in <lambda>
command = lambda:
File "functionclass.py", line 550, in entranceTriplan
self.show2(self.triplan)
File "functionclass.py", line 164, in show2
self.affichageTriplan("exemple.mnc")
File "functionclass.py", line 584, in affichageTriplan
self.viewer1 = vtkSliceWidget.vtkSliceWidget(self.triplan.frame1,
width=256,height=256)
File "/home/athinnes/atamai/examples/vtkSliceWidget.py", line 108, in
__init__
Tkinter.Widget.__init__(self, master, 'vtkTkRenderWidget', cnf, kw)
File "/usr/local/lib/python2.2/lib-tk/Tkinter.py", line 1780, in
__init__
self.tk.call(
TclError: invalid command name "vtkTkRenderWidget"
This following is a simplify version of the software architecture without
using vtkSliceWidget .
Each module corresponding to one part of the interface:
######################################################################
#testfunc.py
from Tkinter import *
from vtkTkRenderWidget import *
import triplantest
import bouton
import render
class Functions:
def __init__(self, myParent):
print "functions class created"
# If you comment the self.render line. The button will open the
triplantest window
self.render = render.Render(self, myParent)
self.bouton = bouton.Bouton(self)
self.triplan = triplantest.Triplan(self)
## Procedure: show
# this procedure is call to show on the screen the windows winname
def show(self, winname):
winname.deiconify()
self.affichageTriplan()
## Procedure: affichageTriplan
# This procedure setup the slice image inside triplan interface
def affichageTriplan(self):
self.renderWidget = vtkTkRenderWidget(self.triplan.frame1)
self.renderWidget.pack(expand='true',fill='both')
if __name__ == '__main__':
root = Tk()
function = Functions(root)
function.triplan.withdraw()
root.mainloop()
#######################################################################
#render.py
from vtkTkRenderWidget import *
from vtkpython import *
from Tkinter import *
class Render:
def __init__(self, myFunctions, myParentFunction):
self.functions = myFunctions
myParentFunction.title("test vtkTkRenderWidget")
self.viewer = Frame(myParentFunction, borderwidth = 2, relief =
"ridge")
self.renderWidget = vtkTkRenderWidget(self.viewer)
self.viewer.pack(expand='true',fill='both')
self.renderWidget.pack(expand='true',fill='both')
#########################################################################
#
#triplantest.py
from Tkinter import *
class Triplan(Tk):
def __init__(self, myFct):
Tk.__init__(self)
self.functions = myFct
self.title("Frame for vtkSliceWidget")
self.mainframe = Frame(self)
self.frame1 = Frame(self.mainframe, relief="ridge", borderwidth=2)
self.frame1.pack(expand='true',fill='both')
self.mainframe.pack(expand='true',fill='both')
###############################################################
#bouton.py
from Tkinter import *
class Bouton(Tk):
def __init__(self, myFunctions):
Tk.__init__(self)
self.functions = myFunctions
self.title("Click On Button")
self.frame = Frame(self)
self.bouton = Button(self.frame, text = "click \nhere",
command = lambda:
self.functions.show(self.functions.triplan)
)
self.frame.pack(expand='true',fill='both')
self.bouton.pack(expand='true',fill='both')
######################################################################3
If you run "python testfunc.py" you will see the error. It's the same I
have in the full software.
Somebody have any idea why it's not working and how to solve it?
It seams, vtkTkRenderWidget cannot be call twice. But I don't know how to
solve it.
Thank you for your attention
Best regards
Alexandre Thinnes
Je dois avoir un probleme de mail avec l'AIST.
Il semble que l'adresse qui envois les mails ne soit pas celle qui les
recois. >_<
Accédez au courrier électronique de La Poste : www.laposte.net ;
3615 LAPOSTENET (0,34?/mn) ; tél : 08 92 68 13 50 (0,34?/mn)
More information about the vtkusers
mailing list