Похоже, вы не знаете нескольких концепций, поэтому я объясню, что делает loadUi, если вы не передадите ему второй аргумент, то будет создано новое окно (в вашем случае «self.UI»), отличное от "win", поэтому событие wheel не переносится из "self.UI" в "win", поэтому метод "win" wheelEvent не вызывается.
Итак, сначала вы должны сделать "Klassenname" отображаемое окно и для этого вы должны передать «Я».
Учитывая вышеизложенное, решение:
import sys
from PyQt5 import QtCore, QtWidgets, uic
class Klassenname(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(Klassenname, self).__init__(parent)
uic.loadUi("/path/of/your_file.ui", self)
def wheelEvent(self, event):
if event.angleDelta().y() > 0:
self.zoomIn()
else:
self.zoomOut()
return super(Klassenname, self).wheelEvent(event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
win = Klassenname()
win.show()
sys.exit(app.exec_())
С помощью кода вы будете слушать события колесика мыши, которое получает "Klassenname", но если вы хотите прослушивать только события мыши QGraphicsView, вы должны использовать eventFilter:
import sys
from PyQt5 import QtCore, QtWidgets, uic
class Klassenname(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(Klassenname, self).__init__(parent)
uic.loadUi("/path/of/your_file.ui", self)
self.graphicsView.installEventFilter(self)
def eventFilter(self, obj, event):
if obj is self.graphicsView and event.type() == QtCore.QEvent.Wheel:
if event.angleDelta().y() > 0:
self.zoomIn()
else:
self.zoomOut()
return super(Klassenname, self).eventFilter(obj, event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
win = Klassenname()
win.show()
sys.exit(app.exec_())