В приведенном ниже примере шорткат Delete работает только QLineEdit. Однако если закомментировать либо #1 либо #2, то на обоих QTreeWidget и QScintilla вызываеться один и тот-же метод, хотя контекстом указан только сам виджет. Как правильно организовать раздельную реакцию на Delete?
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from PyQt4 import QtCore, QtGui, Qsci
import sys, re, os, logging
log=logging.getLogger(__name__)
class TestDialog(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
self.resize(800, 600)
layout=QtGui.QGridLayout(self)
le=QtGui.QLineEdit(self)
layout.addWidget(le, 0, 0, 1, 2)
tw=QtGui.QTreeWidget(self)
delkey_tw = QtGui.QShortcut(QtGui.QKeySequence("Delete"), tw, context=QtCore.Qt.WidgetShortcut) #1
delkey_tw.activated.connect(self.delkey_tw) #1
layout.addWidget(tw, 1, 0)
sc=Qsci.QsciScintilla(self)
delkey_sc = QtGui.QShortcut(QtGui.QKeySequence("Delete"), sc, context=QtCore.Qt.WidgetShortcut) #2
delkey_sc.activated.connect(self.delkey_sc) #2
layout.addWidget(sc, 1, 1)
def delkey_tw(self):
log.debug("delkey_tw")
def delkey_sc(self):
log.debug("delkey_sc")
app=QtGui.QApplication(sys.argv)
sys.exit(TestDialog().exec_())