2013-04-24 82 views
0

我剛完成一個腳本,該腳本可以作爲模塊運行。我在原始腳本中調用了一個過程,以便在導入它時運行,打開我的GUI。如何在Maya中成功導入模塊時運行過程

說我想打開這個窗口,如果模塊正確導入。我該怎麼做呢?

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

#procedure這裏

if __name__ == '__main__': 
    createGUI() 

定義。當我輸入我的腳本模塊中的瑪雅我的GUI不開,我在做什麼錯? 謝謝

但是,如果我使用pydoc做文檔和以前的格式它確實輸出。但如果我在if語句之外調用任何程序,
今天晚些時候會上傳我的代碼。

回答

0

嘗試在模塊中打印__name__變量。當您在Maya中導入時,它可能是其他模塊的一部分,因此它不會是'__main__'。 也做這項工作:

import myModule 
myModule.createGUI() 
+0

是的,它的工作原理^但我需要讓GUI自動打開 – 2013-04-24 17:49:00

+0

當你打印'__name__'時,你會得到''__main __''還是你的模塊的名字?我非常確定,如果我在腳本編輯器中打印名字,我會得到'__main__',這不會是'__main __'' – 2013-04-24 17:51:00

+0

...我很困惑。在我單獨的python文件中,如果我只是在底部調用createGUI,gui會打開。但是,當嘗試pydoc它說cmds沒有在嘗試中定義,並且不會將文檔寫入html文件。 – 2013-04-24 17:58:52

0

如果 == 主要是「如果我在解釋作爲腳本運行」的標準成語。但是,在模塊中鬆散的所有語句都將在導入時執行。如果您希望在導入模塊時運行代碼,只需將可執行代碼放在腳本底部(因此所有名稱都是在調用之前定義的),並且可以在兩個地方運行。

那就是說:不要。你真的不想編寫在導入之外運行的代碼,而不是簡單的初始化和模塊特定的設置。這是迄今爲止最好只寫它像:

def create_my_gui(): 
    # do stuff 

if name == "__main__": 
    create_my_gui() 

,然後調用從任何代碼導入它在Maya模塊:

import myModule 
myModule.create_my_gui() 

這樣,你得到當GUI而不是彈出具有最高決定它會在您每次彈出打開模塊時出現。否則,你不能窺探模塊來抓取一個函數或類而不會導致gui運行。

相關問題