雖然nuke內(nèi)置了pyside踱蛀,但是想用pyqt還是可以的。
配置pyqt需要幾個步驟絮供,當(dāng)然Python26也要安裝子巾。
要在nuke里面用qt描孟,先下載Qt 4.6.2 然后運(yùn)行build.py 參數(shù) release 64,編譯pyqt需要鏈接的所有庫砰左。
編譯完成后,將可執(zhí)行程序的路徑加入環(huán)境變量场航。<qtbuilddir>/bin/
后面是各個平臺的具體操作步驟:
Mac OSX
- 下載sip缠导,并解壓
- 運(yùn)行如下命令:
configure.py
make
make install
- 下載pyqt4的源碼,并解壓
- 到解壓目錄下面運(yùn)行命令:
configure.py
make
make install
- PyQt庫配置來指向nuke的qt庫溉痢,運(yùn)行soFileFixForMacPyQt.py,其和qt的源碼綁在一起僻造。
最后根據(jù) Environment setup來設(shè)置環(huán)境。
Linux
- 下載sip孩饼,解壓髓削,編譯:
configure.py
make
make install
- 下載pyqt4,解壓編譯:
configure.py
make
make install
最后看 環(huán)境設(shè)置部分
Window
和linux操作差不多镀娶,不再贅述立膛。
Enviroment Setup
編譯好的sip和pyqt應(yīng)該在python的site-packages目錄。推薦做法:拷貝sip和pyqt到一個單獨(dú)目錄梯码,然后添加到python path里面
例如: 給nuke的pyqt創(chuàng)建一個目錄<pyqtbuilddir>宝泵,并拷貝文件到目錄下:
## files and dirs to copy
PyQt4/
sip.so
sipconfig.py
sipdistutils.py
## final directory tree looks like
<pyqtbuilddir>/PyQt4/*
<pyqtbuilddir>/sip.so
<pyqtbuilddir>/sipconfig.py
<pyqtbuilddir>/sipdistutils.py
將pyqt添加到python,你就可以從nuke里面使用pyqt了轩娶。
export PYTHONPATH=<pyqtbuilddir>
或者在nuke的 menu.py里面加入:
sys.path.append ("<pyqtbuilddir>")
第一個 PyQt 窗口
啟動NUKe儿奶,打開腳本編輯器,填入下列命令:
from PyQt4 import QtGui
label = QtGui.QLabel("Hello World")
label.show()
hello world窗口就會顯示
Pyside和 PyQt knobs
可以把PyQt的widget插入nuke的python panel鳄抒,并像
nuke的panel一樣痛成樱靠。
想要PyQt的widget可托斫Γ靠瓤鼻,就需要用一個wrapper knob來創(chuàng)建
其可以被PyCustom_Knob.
wrapper knob 要有 makeUI()函數(shù)來返回widget。
作為例子闹司,可以看nukescript/pyQtExamples目錄下的webBrowser.py
測試?yán)佑樽校谀_本編輯器輸入:
import nukescripts.pyQtExamples.webBrowser
現(xiàn)在pane菜單就有一個web browser了。
也可以使用panels.registerWidgetAsPanel 的wrapper函數(shù)來 wrap一個PyQt的widget游桩,而不是創(chuàng)建一個自定義knob牲迫,同樣適用于pyside耐朴。
更多信息請查看Dockable Pyside widget。
從Qt程序遷移 nuke6.2
以前的nuke盹憎,需要在另外的線程里面運(yùn)行pyqt筛峭,并且用executeInMainthread來調(diào)用nuke。
這在nuke6.3或者以后版本就不適用了陪每。
為了后向兼容影晓,pyQtappUtiles.py可以讓以前的函數(shù)繼續(xù)使用,但是推薦更新代碼檩禾,使用qt標(biāo)準(zhǔn)的show函數(shù)挂签。