簡體   English   中英

if 語句為 false 時執行

[英]If statement executes when it's false

當我嘗試添加旋鈕時,我收到“旋鈕已連接到節點”

當我嘗試從 menu.py 按鈕運行我的代碼時,我得到了這個。如果我從腳本編輯器運行腳本,我沒有收到錯誤.. 為什么會這樣?

for i in nuke.allNodes():
    if not i.knob("tempMb"):
        if sum0 == 0:
            nuke.message("first tmp knob created")
            i.addKnob(t)
        elif sum0 != 0:
            nuke.message("second tmp knob created")
    else: 
        nuke.message("no nob created")     

即使我檢查是否有一個名為 tempMb 的旋鈕.. 它仍然像沒有一樣執行它,當有時 .. 編輯:“t”早先被定義為 Int_Knob ......

謝謝!

首先,我要將elif更改為else因為您的 if 條件已經在測試 elif 條件,而我看不到在此代碼中會如何更改。

for i in nuke.allNodes():
    if not i.knob("tempMb"):
        if sum0 == 0:
            nuke.message("first tmp knob created")
            i.addKnob(t)
        else:
            nuke.message("second tmp knob created")
    else: 
        nuke.message("no nob created")

其次,我假設i.knob(string)不檢查該名稱的旋鈕是否存在,否則您的代碼會表現得更像您預期的那樣。 因此,當我閱讀文檔時,似乎可能會發生一些事情:

  1. 節點可能是也可能不是返回的列表中的旋鈕。 如果你知道你只想要旋鈕,你可以按類類型過濾。 我認為這可能看起來像nuke.allNodes(nuke.Knob)
  2. 我不認為 nuke.Knob.knob(str) 是對其名稱或標簽的測試。 我閱讀文檔時暗示您的測試應該是: if i.name != "tempMb":或者if i.label != "tempMb"這取決於您如何創建t

盡管如此,我認為這里可能存在邏輯錯誤。 如果您有 2 個節點(並且如果您進行了上述更改,我們假設它們都是旋鈕),並且當您遍歷所有節點時,第一個節點是tempMb ,那么當您檢查第二個節點時,它不會是那個你會嘗試添加t ,我假設它也被命名為tempMb 所以這就是為什么在你看來,負面情況似乎總是在發生。

您需要通過以下兩種方式之一進行重組:

  1. 在循環之前,設置一個 false 布爾值,在循環中,當發現旋鈕為tempMb時將其設置為 true; 一旦發生這種情況,您最好立即退出循環。 在循環之后檢查布爾值以查看添加t是否安全。
  2. 我看到一個可能的函數nuke.exists(s)它告訴你是否有任何名為s “項目”。

也許刪除循環並編寫以下內容:

 if not nuke.exists("tempMb"):
     # Add your knob. I'm actually not seeing `addKnob` in the docs.

試試這個解決方案:

t = nuke.Int_Knob( 'tempMb', 'tempMb' )

for i in nuke.allNodes():
    if not i.knob("tempMb"):
        if nuke.exists("sum0"):
            nuke.message("First tmp knob created")
            i.addKnob(t)
        else:
            nuke.message("Second tmp knob created")
    else: 
        nuke.message("No knob created")

在此處輸入圖片說明

nuke.exists("Name of Knob")將檢查您的旋鈕是否存在。 嘗試在您的 if 語句中使用它。

更多詳情請訪問Nuke 論壇

另請參閱有關 nuke.exists 的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM