PyQt5 Events
Unsolved
Language Bindings
-
Please can someone help me, I want to trigger the handleEvents() function?
import sys import types from types import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import PyQt5.QtCore as core import PyQt5.QtGui as gui import PyQt5.QtWidgets as widgets import PyQt5.uic as uic import mainwindow_auto class MainWindow(QMainWindow, mainwindow_auto.Ui_MainWindow): def __init__(self): super(self.__class__, self).__init__() self.setupUi(self) self.setGeometry(150, 150, 1280, 600) self.setWindowFlags(Qt.FramelessWindowHint) self.img = gui.QImage("test.png") self.painter = gui.QPainter() self.transformHistory = gui.QTransform() self.transformTotal = gui.QTransform() self.startPoint = core.QPoint() self.widget = QWidget() self.widget.grabGesture(core.Qt.PinchGesture) self.widget.grabGesture(core.Qt.TapGesture) # self.widget.event = types.MethodType(self.handleEvents, self.widget) def handleEvents(self, event): print("v") global transformHistory, transformTotal, startPoint if event.type() == core.QEvent.Gesture: print("dddd") g = event.gesture(core.Qt.PinchGesture) if g != None: upperLeft = self.mapToGlobal(core.QPoint()) scale = g.totalScaleFactor() centerPoint = g.centerPoint() - upperLeft if g.state() == core.Qt.GestureStarted: startPoint = g.centerPoint() - upperLeft transformTotal = transformHistory * gui.QTransform().scale(scale, scale) if g.state() == core.Qt.GestureFinished: transformHistory = transformTotal self.update() else: g = event.gesture(core.Qt.TapGesture) if g.state() == core.Qt.GestureFinished: print("tap ", g.position()) transformTotal = gui.QTransform() transformHistory = gui.QTransform() self.update() elif event.type() == core.QEvent.Paint: painter = QPainter() painter.begin(self) painter.setTransform(transformTotal) painter.drawImage(0, 0, self.img) painter.end() return True def keyPressEvent(self, e): print("b") if e.key() == Qt.Key_Escape: self.close() if __name__ == '__main__': global form app = widgets.QApplication(sys.argv) form = MainWindow() print("a") form.show() sys.exit(app.exec_())