我需要位置光标的draggerContext方法提供给我的anchorPoint值。但是我不想通过setToolTo输入draggerContext。我使用了QtGui.QCursor.pos(),但是它提供了不同的值。如果有人可以指导我。谢谢
from maya import cmds
from PySide2 import QtGui, QtCore, QtWidgets
data = {
"timer": None
}
class Test:
def __init__(self):
self.ctx = 'ctx'
self.cursor = 'default'
def Event(self):
currentPos = QtGui.QCursor().pos()
widget = QtWidgets.qApp.widgetAt(currentPos)
relpos = widget.mapFromGlobal(currentPos)
print currentPos
print relpos
print "relpos-X : "+str(relpos.x())
print "relpos-Y : "+str(relpos.y())
print QtCore.QEvent.KeyPress
vpX, vpY, _ = cmds.draggerContext(self.ctx, query=True, anchorPoint=True)
print "VP-X : "+str(vpX)
print "VP-Y : "+str(vpY)
def Press(self):
if cmds.dagObjectHit():self.Event()
def Start(self):
"""Track the cursor"""
if data["timer"] is not None:
data["timer"].stop()
if not cmds.dagObjectHit():self.Start()
self.Ctx()
timer = QtCore.QTimer()
print timer
timer.setInterval(0)
timer.timeout.connect(self.Press)
timer.start()
# Store reference
data["timer"] = timer
def Stop(self):
if data["timer"] is not None:
data["timer"].stop()
data["timer"] = None
def Ctx(self):
if cmds.draggerContext(self.ctx,ex=True):cmds.deleteUI(self.ctx)
self.context = cmds.currentCtx()
cmds.draggerContext(self.ctx,n=self.ctx,cur=self.cursor,pc=self.Press)
cmds.setToolTo(self.ctx)
start = Test()
start.Start()
#start.Stop()
我不想使用draggerContext方法并且不输入self.ctx。但是relpos。()的值不同于vpY
我认为我发现了一个错误。QtGui.QCursor()。pos()从上方进行计算,但锚点从下方进行计算。现在,如果您有更好的解决方案来获取anchorPoint。感谢您的指导。
from maya import cmds
from PySide2 import QtGui, QtCore, QtWidgets
data = {
"timer": None
}
class Test:
def __init__(self):
self.ctx = 'ctx'
self.cursor = 'default'
def Event(self):
currentPos = QtGui.QCursor().pos()
widget = QtWidgets.qApp.widgetAt(currentPos)
relpos = widget.mapFromGlobal(currentPos)
print currentPos
print relpos
print "relpos-X : "+str(relpos.x())
print "relpos-Y : "+str(relpos.y())
print QtCore.QEvent.KeyPress
vpX, vpY, _ = cmds.draggerContext(self.ctx, query=True, anchorPoint=True)
print "VP-X : "+str(vpX)
print "VP-Y : "+str(vpY)
def Press(self):
if cmds.dagObjectHit():self.Event()
def Start(self):
"""Track the cursor"""
if data["timer"] is not None:
data["timer"].stop()
if not cmds.dagObjectHit():self.Start()
self.Ctx()
timer = QtCore.QTimer()
print timer
timer.setInterval(0)
timer.timeout.connect(self.Press)
timer.start()
# Store reference
data["timer"] = timer
def Stop(self):
if data["timer"] is not None:
data["timer"].stop()
data["timer"] = None
def Ctx(self):
if cmds.draggerContext(self.ctx,ex=True):cmds.deleteUI(self.ctx)
self.context = cmds.currentCtx()
cmds.draggerContext(self.ctx,n=self.ctx,cur=self.cursor,pc=self.Press)
cmds.setToolTo(self.ctx)
start = Test()
#start.Start()
start.Stop()
我认为我发现了一个错误。QtGui.QCursor()。pos()从上方进行计算,但锚点从下方进行计算。现在,如果您有更好的解决方案来获取anchorPoint。感谢您的指导。