我使用Qt设计器创建了一个工具,其中有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())
再说一次,因为这只是一个单一的行动,因此我被难住了。。。还是继续使用3个独立的函数更好?你知道吗
如果没有调试或者源代码,我就无法理解这里发生了什么,因为理论上所有的工作都是正常的,所以或者我不能正确理解或者在代码的其他部分有一些错误。你知道吗
主要问题是,当您连接触发的信号时,您不知道将要按下QLineEdit。哪里知道QLineEdit被按下了?好吧,在方法custom\u菜单中,因为方法sender()返回打开上下文菜单的小部件,要传输它,使用一个属性或数据,所以要比较属性和QLineEdit:
相关问题 更多 >
编程相关推荐