[英]Calling a variable outside a class
如何獲取在類內定義的intSliderGrp
的值並將其用於所述類外的函數?
我試圖將我的主 UI 全部放在一個類中,這樣我就可以在 Maya 內部調用它,但是我需要在滑塊上設置值來修改 classUI 之外的函數:
import maya.cmds as cmds
def setSubdivision(*args):
obj = cmds.ls(sl = True)
asubd = cmds.intSliderGrp(sliderSet, query = True , value = True)
for i in obj:
cmds.setAttr('%s.aiSubdivIterations' %i, int(asubd))
class subdivisionUI():
windowName = "ArnoldSubdivisionWindow"
def show(self):
if cmds.window(self.windowName, query = True, exists = True, width = 150):
cmds.deleteUI(self.windowName)
cmds.window(self.windowName)
mainColumn = cmds.columnLayout(adjustableColumn = True)
cmds.text(l='Set subdivisions to selected objects', al = 'center')
column2 = cmds.rowLayout(numberOfColumns = 2, adjustableColumn=2, columnAlign=(1, 'right'))
sliderSet = cmds.intSliderGrp(l = "Subdivisions", s =1, min = 0, max = 20, field = True)
b = cmds.button(l = 'Set')
cmds.button(b, e = True , command = setSubdivision, width = 50 )
cmds.showWindow()
subdivisionUI().show()
這是我第一次使用類,所以我仍在努力了解它們的工作原理和正確使用方法。
目前,您沒有利用類的優勢在 Maya 中創建 UI。 最大的優點是您可以將所有內容封裝在此類中,而無需任何外部函數或全局變量。 如果您嘗試這種方法,您的問題就會消失:
import maya.cmds as cmds
class subdivisionUI():
windowName = "ArnoldSubdivisionWindow"
def __init__(self):
if cmds.window(self.windowName, query = True, exists = True, width = 150):
cmds.deleteUI(self.windowName)
self.window = cmds.window(self.windowName)
mainColumn = cmds.columnLayout(adjustableColumn = True)
cmds.text(l='Set subdivisions to selected objects', al = 'center')
column2 = cmds.rowLayout(numberOfColumns = 2, adjustableColumn=2, columnAlign=(1, 'right'))
self.sliderSet = cmds.intSliderGrp(l = "Subdivisions", s =1, min = 0, max = 20, field = True)
b = cmds.button(l = 'Set')
cmds.button(b, e = True , command = self.setSubdivision, width = 50 )
def setSubdivision(self, *args):
obj = cmds.ls(sl = True)
asubd = cmds.intSliderGrp(self.sliderSet, query = True , value = True)
for i in obj:
cmds.setAttr('%s.aiSubdivIterations' %i, int(asubd))
def show(self):
cmds.showWindow(self.window)
subdivisionUI().show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.