Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » [PyQt] Неверная работа QShortcut с QsciScintilla [RSS Feed]

#1 Июль 9, 2010 14:09:18

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

[PyQt] Неверная работа QShortcut с QsciScintilla

Необходима различная работа кнопки 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_())



Офлайн

#2 Июль 9, 2010 15:02:01

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

[PyQt] Неверная работа QShortcut с QsciScintilla

Решил пока наследованием и отловом клавиатурных событий:

    def keyReleaseEvent(self, event):
if event.key()==QtCore.Qt.Key_Delete:
self.testmethod()



Офлайн

  • Начало
  • » GUI
  • » [PyQt] Неверная работа QShortcut с QsciScintilla[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version