如何正确重写qscintilla mousePressEvent?

时间:2019-01-20 18:09:16

标签: python pyqt5 qscintilla

我有MainWindow类,并且具有qscintilla编辑器,我想将监听器添加到编辑器mousePressEvent

class MainWindow(QtWidgets.QMainWindow, gui.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.editor.mousePressEvent = self.on_editor_click

    def on_editor_click(self, QMouseEvent):
        // here i want add my code
        return QsciScintilla.mousePressEvent(self, QMouseEvent)

如果我重写mousePressEvent-编辑器将损坏(鼠标单击将不起作用)。我尝试调用初始mousePressEvent,但无法正常工作,应用崩溃了

1 个答案:

答案 0 :(得分:0)

将mousePressEvent方法分配给另一个函数是不正确的,mousePressEvent不是信号,它是QsciScintilla的一部分。 一种可能的解决方案是创建一个个性化的QsciScintilla,它发出如下所示的信号:

class ClickQsciScintilla(QsciScintilla):
    clicked = QtCore.pyqtSignal()

    def mousePressEvent(self, event):
        self.clicked.emit()
        QsciScintilla.mousePressEvent(self, event)

然后创建一个ClickQsciScintilla实例并连接到该信号:

self.__editor = ClickQsciScintilla()
self.__editor.clicked.connect(self.on_editor_click)

您的处理程序:

 def on_editor_click(self):
        print "Editor was clicked!"
相关问题