The Foundry Nuke –在QLabel上显示动画值

时间:2018-10-11 01:45:51

标签: python pyqt pyside qlabel nuke

我目前正在尝试根据NUKE(或Maya)时间轴在QLabel中显示一个值(QLineEdit也可以)。

我正在使用Nuke来运行代码,我想根据当前框架显示该值,以显示如下内容:

当前帧是1001。如果我更改为框架1002,则希望QLabel进行相应的更改。

有办法吗?

import PySide.QtGui as QtGui
import PySide.QtCore as QtCore

def test():
    class framePanel(QtGui.QWidget):
       super(framePanel, self).__init__(self):
           layout = QtGui.QVBoxLayout(self)
           self.label = QtGui.QLabel('This is frame 1001')
           layout.addWidget(self.label)

    framePanel = framePanel()
    framePanel.show()

test()

谢谢。

1 个答案:

答案 0 :(得分:0)

我为The Foundry Nuke 11.2v4的Mac版本编写了以下代码,因此有一个PySide2模块,而不是Nuke早期版本的PySide模块。此外,触摸QtWidgetsQtGui也有一些区别。要获取当前帧,您必须使用nuke.frame()

以下是QLabel的示例:

import nuke
from PySide2 import QtGui, QtCore
from PySide2 import QtWidgets

def theTest():  
    class framePanel(QtWidgets.QWidget):
        label = QtWidgets.QLabel("The current frame is: %s" % nuke.frame())
        label.show()
theTest()

enter image description here

这是QMessageBox 具有动态变化的值的示例:

import nuke
import os.path
from PySide2 import QtGui, QtCore
from PySide2 import QtWidgets

def signalEmitter():
    qApplication = QtWidgets.QApplication.activeWindow()
    qApplication.emit(QtCore.SIGNAL('wasChanged()'))

nuke.addKnobChanged(signalEmitter, nodeClass='Viewer')
qmBox = QtWidgets.QMessageBox(None)
qmBox.setText('The current frame is: %s' % nuke.frame())
qmBox.connect(QtCore.SIGNAL("wasChanged()"), lambda: qmBox.setText('The current frame is: %s' % nuke.frame()))
qmBox.setModal(False)
qmBox.show()

QMessageBox不是modal

enter image description here

  

按此图片以播放GIF动画!