我有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,但无法正常工作,应用崩溃了
答案 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!"