I'm running into an issue with PyMel where a function I call from a button
command isn't reloading correctly after I edit the file. The TestWindow.py
example below shows a simple function called TestCommand(self). I call this
function from a window button and it prints "Foo". If I change the text to
something like "Foo 2", save the file and go back into Maya and click the
button I still see "Foo" get printed instead of "Foo 2". If I restart Maya
and click the button I see the expected text "Foo 2". In my shelf command
listed below I'm reloading TestWindow.py, and if I change the functionality
of main() I see those changes reflected correctly when I go back into Maya
and click the shelf button. The issue appears to only occur when calling
TestCommand(self).
I'm also experiencing a separate issue where I get the error listed at the
end of this post when I do the following:
1. Start Maya.
2. Click shelf button to open window.
3. Change TestCommand() print text from "Foo" to "Foo 2" and save.
4. Go back to Maya and click shelf button again
Any ideas? I'm new to Python/PyMel so I may be doing something really
stupid here ;)
*TestWindow.py:*
from pymel.core import *
def main():
#Delete window if it exists
if window("TestWindow", exists=True):
deleteUI("TestWindow")
windowPref( "TestWindow", remove=1 )
winWidth = 175
winHeight = 400
borderStyle = "etchedOut"
testWindowObject = window("TestWindow",title="Test Window")
columnLayout("MainColumn", width=winWidth, adj=1, columnAttach=("both",
5))
frameLayout("Frame", parent="MainColumn", collapsable=1, collapse=0)
rowColumnLayout(parent="Frame",numberOfColumns=2, columnAlign=([1,
"left"], [2, "left"]))
button(label="Test Command", height=50, width=100, command=TestCommand)
#Dock Control
allowedAreas = ['right', 'left']
#If dockControl exists, show it and bring it to the front
if dockControl('TestWindowDock', query=True, exists=True):
dockControl('TestWindowDock', edit=True, visible=True, r=True)
else:
#dockControl does not exist, create it (this will show it).
dockControl('TestWindowDock', label="Test Window", area='right',
content="TestWindow", allowedArea=allowedAreas)
def TestCommand(self):
print "Foo"
*Shelf Command:*
import TestWindow
reload (TestWindow)
TestWindow.main()
*Error:*
import TestWindow
reload (TestWindow)
TestWindow.main()
# Error: windowPref: Object 'TestWindow' not found.
# Traceback (most recent call last):
# File "<maya console>", line 3, in <module>
# File "C:/Users/brad/Documents/maya/2014-x64/scripts\TestWindow.py",
line 7, in main
# windowPref( "TestWindow", remove=1 )
# File "C:\Program
Files\Autodesk\Maya2014\Python\lib\site-packages\pymel\internal\pmcmds.py",
line 134, in wrappedCmd
# res = new_cmd(*new_args, **new_kwargs)
# RuntimeError: windowPref: Object 'TestWindow' not found. #
--
You received this message because you are subscribed to the Google Groups
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/84012ece-5e97-4ad8-aba9-831dd5592537%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.