Foundry Nuke - отображает анимированное значение в QLabel

В настоящее время я пытаюсь показать значение в QLabel ( QLineEdit тоже будет работать) на основе временной шкалы NUKE (или Maya).

Я использую 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 ответ


Я написал следующий код для Mac версии The Foundry Nuke 11.2v4, поэтому вместо PySide есть модуль PySide2 который предназначен для предыдущих версий Nuke. Кроме того, есть некоторые различия касательно QtWidgets vs QtGui . Для получения текущего кадра вам необходимо использовать 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()

введите описание изображения здесь

И вот пример 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 .

введите описание изображения здесь

Нажмите эту картинку, чтобы воспроизвести анимацию GIF!


Есть идеи?

10000