如何缩放和移动图像qlabel pyqt5
我同时陷入困境的缩放和移动图像。图像在Qlabel中设置。
Update
我正在使用MouseMoveEvent进行缩放
def mousePressEvent(self, evt):
self.oldPos = evt.globalPos()
def mouseMoveEvent(self, evt):
self._moveFrameImage(evt, self.oldPos)
self.oldPos = evt.globalPos()
def _moveFrameImage(self, evt, oldPos):
delta = QtCore.QPoint(evt.globalPos() - oldPos)
self.initPointImageSatelital =
QtCore.QPoint(self.lbl_imagenSatelital.x() + delta.x() ,
self.lbl_imagenSatelital.y() + delta.y())
self.lbl_imagenSatelital.move(self.lbl_imagenSatelital.x() +
delta.x(), self.lbl_imagenSatelital.y() + delta.y())
self.lbl_imagenSatelital.move(self.initPointImageSatelital)
self.oldPos = evt.globalPos()
来处理该机芯,我使用的
def wheelEvent(self,event):
valueDelta = event.angleDelta().y()
self._zoomInOut(valueDelta)
self.lbl_imagenSatelital.move(-300,-100)
def _zoomInOut(self, deltaIncrease: int):
if deltaIncrease > 0:
self.zoom_out()
self.zoomValue = self.zoomValue + 5
else:
self.zoom_in()
self.zoomValue = self.zoomValue - 5
def zoom_in(self):
self.widthImagenSatelital += 10
self.heightImagenSatelital += 10
self.resize_image()
def zoom_out(self):
self.widthImagenSatelital -= 10
self.heightImagenSatelital -= 10
self.resize_image()
def resize_image(self):
self.lbl_imagenSatelital.move(self.initPointImageSatelital)
self.lbl_imagenSatelital.setPixmap(self.pixImage.scaled(
self.widthImagenSatelital, self.heightImagenSatelital, QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation))
self.lbl_imagenSatelital.move(self.initPointImageSatelital)
是Qlabel的父母的父母是qmainwindow,
def __init__(self):
super(introWindow, self).__init__()
self.centralwidget = QtWidgets.QWidget(self)
self._insertImageAtFrame()
def _insertImageAtFrame(self):
fileNamePath = 'C:/Users/Investigaciones-Rob/Desktop/imagen_satelital.png'
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) #Minimum y Prefered
self.pixImage = QtGui.QPixmap(fileNamePath)
self.lbl_imagenSatelital = QtWidgets.QLabel()
self.lbl_imagenSatelital.setParent(self)
self.heightImagenSatelital = 400
self.widthImagenSatelital = 600
self.zoomValue = 0
self.lbl_imagenSatelital.setPixmap(self.pixImage.scaled(self.widthImagenSatelital, self.heightImagenSatelital, QtCore.Qt.KeepAspectRatio))
self.lbl_imagenSatelital.setSizePolicy(sizePolicy)
问题是在我在self.resize_image()中使用setPixmap之后,图像是在我使用setPixmap之后移至窗户的起源。似乎移动功能无法正常工作。
缩放之后:
I'm having troubled scaling and moving an image at the same time. The image is setting in a QLabel.
UPDATE
I'm handling the movement with mouseMoveEvent
def mousePressEvent(self, evt):
self.oldPos = evt.globalPos()
def mouseMoveEvent(self, evt):
self._moveFrameImage(evt, self.oldPos)
self.oldPos = evt.globalPos()
def _moveFrameImage(self, evt, oldPos):
delta = QtCore.QPoint(evt.globalPos() - oldPos)
self.initPointImageSatelital =
QtCore.QPoint(self.lbl_imagenSatelital.x() + delta.x() ,
self.lbl_imagenSatelital.y() + delta.y())
self.lbl_imagenSatelital.move(self.lbl_imagenSatelital.x() +
delta.x(), self.lbl_imagenSatelital.y() + delta.y())
self.lbl_imagenSatelital.move(self.initPointImageSatelital)
self.oldPos = evt.globalPos()
For the scaling, I'm using the wheelEvent
def wheelEvent(self,event):
valueDelta = event.angleDelta().y()
self._zoomInOut(valueDelta)
self.lbl_imagenSatelital.move(-300,-100)
def _zoomInOut(self, deltaIncrease: int):
if deltaIncrease > 0:
self.zoom_out()
self.zoomValue = self.zoomValue + 5
else:
self.zoom_in()
self.zoomValue = self.zoomValue - 5
def zoom_in(self):
self.widthImagenSatelital += 10
self.heightImagenSatelital += 10
self.resize_image()
def zoom_out(self):
self.widthImagenSatelital -= 10
self.heightImagenSatelital -= 10
self.resize_image()
def resize_image(self):
self.lbl_imagenSatelital.move(self.initPointImageSatelital)
self.lbl_imagenSatelital.setPixmap(self.pixImage.scaled(
self.widthImagenSatelital, self.heightImagenSatelital, QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation))
self.lbl_imagenSatelital.move(self.initPointImageSatelital)
The parent of my Qlabel is the QMainWindow
def __init__(self):
super(introWindow, self).__init__()
self.centralwidget = QtWidgets.QWidget(self)
self._insertImageAtFrame()
def _insertImageAtFrame(self):
fileNamePath = 'C:/Users/Investigaciones-Rob/Desktop/imagen_satelital.png'
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) #Minimum y Prefered
self.pixImage = QtGui.QPixmap(fileNamePath)
self.lbl_imagenSatelital = QtWidgets.QLabel()
self.lbl_imagenSatelital.setParent(self)
self.heightImagenSatelital = 400
self.widthImagenSatelital = 600
self.zoomValue = 0
self.lbl_imagenSatelital.setPixmap(self.pixImage.scaled(self.widthImagenSatelital, self.heightImagenSatelital, QtCore.Qt.KeepAspectRatio))
self.lbl_imagenSatelital.setSizePolicy(sizePolicy)
The problem is after I used setPixmap in self.resize_image(), the image move to the origin of the window. It seems that the move function is not working.
after scaling:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现了错误。只是擦除这条线
I found the mistake. Just erase this line