Python 为PyQt中的2个对象创建一个快捷键

Python 为PyQt中的2个对象创建一个快捷键,python,pyqt,Python,Pyqt,如何为两个对象创建“Ctrl+C”绑定:self.table、self.editor 我有: shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self.table, None, self.copyTable) shortcut2 = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self.editor, None, self.copyText) 这是可行的,但也有问题。如果我将焦点放

如何为两个对象创建“Ctrl+C”绑定:self.table、self.editor

我有:

shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self.table, None, self.copyTable)
shortcut2 = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self.editor, None, self.copyText)
这是可行的,但也有问题。如果我将焦点放在self.editor上,并且第一次按“Ctrl+C”时,它执行self.copyTable,第二次则执行self.copyText

我做错了什么

我确实找到了一个解决办法,在那里我创建了一个QAction,它检查哪个对象有焦点并触发想要的操作。但是我更希望每个对象都有一个QAction

编辑(工作示例):


您必须为快捷方式设置正确的上下文:默认情况下,它们是窗口“全局”,您可能希望它们是小部件“本地”。请参阅。

您必须为快捷方式设置正确的上下文:默认情况下,它们是窗口“全局”,您可能希望它们是小部件“本地”“看。

我已经在这里做了,效果很好。非常简单的想法。

只要做一条捷径和一个插槽

在copyFunction中检查焦点,如下所示:

def copyFunction(self):
    if self.table.hasFocus:
        self.copyTable()
    elif self.editor.hasFocus:
        self.copyEditor()

我已经在这里做了,效果很好。非常简单的想法。

只要做一条捷径和一个插槽

在copyFunction中检查焦点,如下所示:

def copyFunction(self):
    if self.table.hasFocus:
        self.copyTable()
    elif self.editor.hasFocus:
        self.copyEditor()

你这一个我没有接受;)现在执行:)您可以将
context=QtCore.Qt.WidgetShortcut
参数传递给
QShortcut
初始化我不接受的参数;)现在执行:)您可以将
context=QtCore.Qt.WidgetShortcut
参数传递给
QShortcut
init
def copyFunction(self):
    if self.table.hasFocus:
        self.copyTable()
    elif self.editor.hasFocus:
        self.copyEditor()