【问题标题】:The Foundry Nuke – Display an animated value on a QLabelThe Foundry Nuke – 在 QLabel 上显示动画值
【发布时间】:2019-03-15 23:59:35
【问题描述】:

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

我正在使用 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()

谢谢。

【问题讨论】:

    标签: python pyqt pyside qlabel nuke


    【解决方案1】:

    我为 Mac 版本的 The Foundry Nuke 11.2v4 编写了以下代码,因此有一个 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()
    

    下面是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 动画!

    【讨论】:

    • 您好,非常感谢您的回答。这基本上是我想要做的,但我希望标签以交互方式改变。能够滚动时间线并查看标签正在动态更新,而无需重新启动代码。你知道有什么办法吗?
    • 第二个例子做了你想做的事。唯一的问题是:这个窗口必须被选中(成为焦点)。 QtCore.SIGNAL('wasChanged()') 完成这项工作。如果未选择此窗口 - 值将停止更新。
    • 它工作正常!明天我将花一些时间用 LineEdit 测试该技术,它应该以相同的方式工作。非常感谢,非常感谢
    • 您好,我只是想知道 QWidget 内部是否也可以使用动态?就像你的第一个例子一样。我无法让它工作谢谢
    • 嗨,很抱歉我没有在QWidget 中使用dynamic。你能给我一些例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2018-03-19
    • 2018-10-08
    • 1970-01-01
    • 2020-01-03
    • 2020-05-02
    • 1970-01-01
    相关资源
    最近更新 更多