显示二维叠加

您可以使用 moverlay Python 模块在 Maya UI 上方显示二维叠加。在以下情况(但并非仅限于这些情况)下,这可能很有用:
Maya 中的叠加是使用 Qt 构建的,支持大多数 HTML 标记,包括图像、动画 gif、样式和表。若要查看有关可用内容的更深入的交互式示例,请在 Python 脚本编辑器中运行以下代码:
import moverlay
moverlay.mayaDemo.demoOverlays()
您可以在安装文件夹下的 Python/Lib/site-packages 中找到 moverlay。您还可以查看交互式教程演示或交互式基础知识教程中包含的脚本,以查看更多有关二维叠加代码和用法的示例。

叠加示例

有三种预制类型的二维叠加:
叠加类型 Hello World 示例 结果

进度对话框:

设计为教程控制器的双按钮对话框窗口。

import moverlay as mo
from PySide2.QtCore import QPoint

def pressNext():
    print("Next was pressed")

def pressReset():
    print("Reset was pressed")
    
def pressClosed(dialog):
    manager.controller.deleteLater()

#create manager object and assign its controller
manager = mo.maya.overlayManager()
manager.controller = mo.progressDialog.ProgressDialog(manager.getMainWindow())

#Assign title and body text
manager.controller.setTitle("Example Dialog")
manager.controller.setBodyText("Hello World")

#Create buttons and attach them to appropriate procedures when clicked
manager.controller.setupButton(0, "Reset", pressReset)
manager.controller.setupButton(1, "Next", pressNext)
manager.controller.setCloseCallback(pressClosed)

#Create a progress bar with 10 steps
manager.controller.progressBar().resetSteps(1, 10)

#Re-size and position the controller
manager.controller.theDialog().resize(mo.utils.DPIScale(180), mo.utils.DPIScale(250))
manager.controller.theDialog().moveToScreenPos(QPoint(0, 0))

#Display the controller
manager.controller.showAndRaise()

HIG 对话框:

设计为显示提示或图表的无按钮对话框窗口。

import moverlay as mo
from PySide2.QtCore import QPoint
    
def pressClosed(dialog):
    dialog.deleteLater()

#Create manager and dialog object
manager = mo.maya.overlayManager()
dialog = mo.higDialog.HIGDialog(manager.getMainWindow())

#Assign body text
label = dialog.setAsLabel('<h1>Example Dialog</h1><p>Hello World</p>')

#Assign close procedure
dialog.setCloseCallback(pressClosed)

#Re-size and position the dialog
dialog.theDialog().resize(mo.utils.DPIScale(180), mo.utils.DPIScale(250))
dialog.theDialog().moveToScreenPos(QPoint(0, 0))
dialog.theDialog().setFixedWidth(250)

dialog.showAndRaise()

气泡:

在指定位置显示的不可交互文字气泡。

注: 若要移除叠加,可以调用 overlayManager 的 deleteAll() 过程。
import moverlay as mo
from PySide2.QtCore import QPoint
from PySide2.QtCore import QSize
from PySide2.QtGui import QColor

#Create manager and overlay definition
manager = mo.maya.overlayManager()
od = mo.overlayDef.OverlayDef(QSize(300, 100))

#Position relative to screen center and apply the style and color
od.style = mo.enums.OverlayStyle.SpeechBubble
od.attachment = mo.enums.RelTo.Center
od.bgColor = QColor(217, 217, 217, 255)

#Create this overlay
overlay = manage.createOverlay(od)

#Assign body text
label=overlay.setAsLabel("""<h2>Hello World</h2><p style="color: #3C3C3C; font-size: 16pt; font-weight: normal; 
font-style: normal; font-family: Artifakt Element">Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>""")

#Add a word bubble tail
overlay.addSpeechBubbleTail(mo.enums.Direction.Top, 0.25)

#Display the overlay bubble
manager.showAll()

相关主题