Я создал инструмент, используя Qt Designer, где у него есть 3 QLineEdits, которые предназначены для translateX, translateY и translateZ.Для каждого QLineEdit я создал контекстное меню, которое позволяет мне устанавливать ключевой кадр для одного из вышеуказанных атрибутов в зависимости от выбора пользователя.
Поэтому вместо написания 3 отдельных функций, которые обслуживают каждый атрибут, я подумал о«перерабатывают» их, используя 1 метод, но у меня возникают проблемы с ним, поскольку я не очень уверен, возможно ли это, поскольку я использую один QAction.
class MyTool(QtGui.QWidget):
def __init__(self, parent=None):
super(MyTool, self).__init__(parent = parent)
# Read off from convert uic file.
self.ui = Ui_MyWidget()
self.ui.setupUi(self)
# translateX
self.ui.xLineEdit.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.ui.xLineEdit.customContextMenuRequested.connect(self.custom_menu)
# translateY
self.ui.yLineEdit.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.ui.yLineEdit.customContextMenuRequested.connect(self.custom_menu)
# translateZ
self.ui.zLineEdit.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.ui.zLineEdit.customContextMenuRequested.connect(self.custom_menu)
self.popMenu = QtGui.QMenu(self)
set_key_action = QtGui.QAction("Set Key at Current Frame", self)
# I am having issues here..
set_key_action.triggered.connect(self.set_key)
self.popMenu.addAction(set_key_action)
...
...
def set_key(self, attr):
# assuming I am trying to effect this locator1 that already exists in the scene
current_item = "|locator1"
cmds.setKeyframe("{0}.{1}".format(current_item, attr))
def custom_menu(self, point):
self.popMenu.exec_(QtGui.QCursor.pos())
Опять же, потому что это толькоодин QAction и, следовательно, я был озадачен ... Или мне будет лучше использовать вместо этого 3 отдельные функции?