0

我刚刚完成一个可以作为模块运行的脚本。我在原始脚本中有一个过程调用,所以它在导入时运行,打开我的 GUI。

如果模块导入正确,假设我想打开这个窗口。我该怎么做呢?

i.e 
try:
 import maya.cmds as cmds
except:
   pass

#procedure 在这里定义

if __name__ == '__main__':
    createGUI()

当我在 Maya 中将脚本作为模块导入时,我的 GUI 没有打开,我做错了什么?谢谢

但是,如果我使用 pydoc 来做文档和以前的格式,它会正确输出。但是,如果我在 if 语句之外调用任何过程,它就会这样做。
今天晚些时候将上传我的代码。

4

2 回答 2

0

if name == main是“如果我在解释器中作为脚本运行”的标准习语。但是模块中所有松散的语句都将在导入时执行。如果您想在导入模块时运行代码,只需将可执行代码放在脚本底部(因此在调用之前定义了所有名称),它将在两个地方运行。

那就是:不要。除了琐碎的初始化和特定于模块的设置之外,您真的不想编写在导入时运行的代码。最好这样写:

def create_my_gui():
   # do stuff

if name == "__main__":
   create_my_gui()

然后从 Maya 中导入的任何代码调用该模块:

import myModule
myModule.create_my_gui()

这样,您就可以决定何时弹出 gui,而不是每次弹出打开模块时都显示它。否则,您无法在不导致 gui 运行的情况下查看模块以获取函数或类。

于 2013-06-13T02:10:09.877 回答
0

尝试在模块中打印__name__变量。当您在 Maya 中导入它时,它可能是其他模块的一部分,因此不会'__main__'。这也有效:

import myModule 
myModule.createGUI()
于 2013-04-24T17:40:43.897 回答