Найти - Пользователи
Полная версия: [PyQt] Неверная работа QShortcut с QsciScintilla
Начало » GUI » [PyQt] Неверная работа QShortcut с QsciScintilla
1
truporez
Необходима различная работа кнопки Delete в разных виджетах.
В приведенном ниже примере шорткат 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_())
truporez
Решил пока наследованием и отловом клавиатурных событий:
    def keyReleaseEvent(self, event):
if event.key()==QtCore.Qt.Key_Delete:
self.testmethod()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB