maya2022、2019を使用
以前に書いた記事でifを使って処理を分ける方法も試していますが、条件指定が複雑になる処理は面倒なのでクリック回数を取得したいと思っていました。
あわせて読みたい
広告
classを使ってクリック回数を取得
python3
maya2022でpython3になったためコードを修正しました。
printをステータスバーに表示するための関数(pm.displayInfo)を追加しています。
参考サイト:Maya print in status bar
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import pymel.core as pm
class NumberCount:
def __init__(self):
self.i = 0
def EmptyFrame(self, *arg):
self.i += 1
pm.displayInfo(self.i)
def show(self, *arg):
cmds.window("CountWindow", title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(columnWidth=150, columnAttach=("both", 0), rowSpacing=0)
cmds.button(label=u'Count', c=self.EmptyFrame)
cmds.showWindow()
def main():
w = NumberCount()
w.show()
main()
クリック回数で処理を分岐
整数さえ取得出来てしまえばifを使っていくらでも処理を分けられます。
実用する場合は、処理を分けたい数に合わせてカウントを0に戻す処理も追加で必要になると思います。
if i == 1:
print('1です')
if i == 2:
print('2です')
python2.7
__init__(self)に関してはあまり理解できておらず、とりあえず最初に実行されるという認識で使っています。
# -*- coding: utf-8 -*-
import maya.cmds as cmds
class NumberCount:
def __init__(self):
self.i = 0
def EmptyFrame(self, *arg):
self.i += 1
print self.i,
def show(self, *arg):
cmds.window("CountWindow", title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(columnWidth=150, columnAttach=("both", 0), rowSpacing=0)
cmds.button(label=u'Count', c=self.EmptyFrame)
cmds.showWindow()
def main():
w = NumberCount()
w.show()
main()
シンプルな方法
python3
maya2022でpython3になったためコードを修正しました。
printをステータスバーに表示するための関数(pm.displayInfo)を追加しています。
参考サイト:Maya print in status bar
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import pymel.core as pm
i = 0
def EmptyFrame(*arg):
global i
i += 1
pm.displayInfo(i)
cmds.window(title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(cw=150, cat=("both", 0), rs=0)
cmds.button(label=u'Count', c=EmptyFrame)
cmds.showWindow()
python2.7
global を使う事によって関数の外にある変数を取得することが出来ました。
# -*- coding: utf-8 -*-
import maya.cmds as cmds
i = 0
def EmptyFrame(*arg):
global i
i += 1
print i,
cmds.window(title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(cw=150, cat=("both", 0), rs=0)
cmds.button(label=u'Count', c=EmptyFrame)
cmds.showWindow()
広告