Pyqt通过鼠标滚轮进行缩放界面

这篇具有很好参考价值的文章主要介绍了Pyqt通过鼠标滚轮进行缩放界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wheelEvent()函数是鼠标滚轮事件的触发函数,我们通过重写wheelEvent()函数进行控制。

大多数视图类和一部分控件应该都有wheelEvent()函数

#放大倍数
self.enlarge_factor=1.20
#缩小倍数
self.shrink_factor=1/self.enlarge_factor
#缩放等级
self.zoom_grade=5
#一次缩放的等级提升
self.zoom_step=1
#缩放锁
self.zoom_lock=False
#缩放等级限制
self.zoom_range=[0,10]

首先定义变量,这里为了缩小和放大的比例相同,缩小倍数为1除以放大倍数。

    def wheelEvent(self, event) -> None:
        # print("angleDelta",event.angleDelta())
        #判断是向前还是向后滚动
        if event.angleDelta().y() > 0:
            zoomFactor=self.enlarge_factor
            self.zoom_grade+=self.zoom_step
        else:
            # print("zoomFactor",self.shrink_factor)
            zoomFactor=self.shrink_factor
            self.zoom_grade-=self.zoom_step
            # print(" self.zoom_grade", self.zoom_grade)
        #判断是否达到放大和缩小的限制
        self.zoom_lock=False
        if self.zoom_grade>self.zoom_range[1]:
            self.zoom_grade=self.zoom_range[1]
            self.zoom_lock=True
        elif self.zoom_grade<self.zoom_range[0]:
            self.zoom_grade=self.zoom_range[0]
            self.zoom_lock=True
        #没有限制,就按比例操作
        if self.zoom_lock!=True:
            self.scale(zoomFactor,zoomFactor)

重写wheelEvent函数。

这里的event对象是个QWheelEvent事件对象。

 event.angleDelta()返回一个Qpoint对象,代表滚动的数值。单位是8分之一度。转一下一般是15度,即120。这个对象只有y有值,因为滚轮只在y轴前后滚动。这就是为什么要用event.angleDelta().y()。

.scale(x,y)是对视图进行等比例伸缩。x,y分别代表x轴y轴的伸缩倍数。

#设置锚点是鼠标位置
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
#设置锚点是正中心
# self.setTransformationAnchor(QGraphicsView.AnchorViewCenter)

还要考虑到伸缩的参考点(就是中心点,也叫锚点)。setTransformationAnchor()函数可对视图进行设定,由于这是对视图属性的设定,这段代码放到初始化函数就行。文章来源地址https://www.toymoban.com/news/detail-529065.html

到了这里,关于Pyqt通过鼠标滚轮进行缩放界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 243:vue+Openlayers 更改鼠标滚轮缩放地图大小,每次缩放小一点

    243:vue+Openlayers 更改鼠标滚轮缩放地图大小,每次缩放小一点

    第243个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中设置鼠标滚轮缩放地图大小,每次滑动一格滚轮,设定的值非默认值1。具体的设置方法,参考源代码。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 示例效果

    2024年02月09日
    浏览(54)
  • Proe 5.0鼠标滚轮无法缩放的解决方法

    Proe 5.0鼠标滚轮无法缩放的解决方法

    鼠标中键(也就是滚轮)在软件里起“确认”功能,滚轮上下滑动可以进行缩放,没反应的话解决办法如下: 1.win+i打开设置界面  2.在设备选项中选择鼠标按键,将悬停在·非活动窗口滚动选项关闭  3.然后就可以进行缩放了  4.按住滚轮可以旋转零件 shift+滚轮按住不放还可

    2024年02月12日
    浏览(40)
  • vue 拖动、缩放容器组件,支持移动端双指缩放和PC端鼠标滚轮缩放

    本组件基于CSS的transform实现。移动端监听touch事件(单指移动,双指移动+缩放),PC端监听mouse事件(移动)和滚动事件wheel(缩放),更新transform的translateX/translateY/scale值,从而实现缩放、移动。由于transform不会产生重排,因此不节流也可以有很好的性能,用户体验就像德芙

    2024年02月03日
    浏览(40)
  • Canvas鼠标滚轮缩放以及画布拖动(图文并茂版)

    Canvas鼠标滚轮缩放以及画布拖动(图文并茂版)

    本文会带大家认识Canvas中常用的坐标变换方法 translate 和 scale,并结合这两个方法,实现鼠标滚轮缩放以及画布拖动功能。 Canvas 绘图的缩放以及画布拖动主要通过 CanvasRenderingContext2D 提供的 translate 和 scale 两个方法实现的,先来认识下这两个方法。 translate 方法 语法: trans

    2023年04月09日
    浏览(40)
  • [pyqt5]触发ctrl+鼠标滚轮事件

    有时候我们需要按住Ctrl+鼠标滚轮实现图像放大或者缩小,因此需要这个事件,具体看代码

    2024年02月13日
    浏览(19)
  • Fabric.js+vue 实现鼠标滚轮缩放画布+移动画布

    话不多说 直接贴代码 一、实现鼠标滚轮缩放画布 使用说明,我的canvas画布定义为 canvas,替他均不用额外设置变量。canvas = new fabric.Canvas(\\\'editorCanvas\\\', {... 二、实现鼠标按下变抓手,并可移动画布中内容 使用说明:data中定义panning: false,用来标记鼠标按下状态(是否鼠标按下)

    2024年02月09日
    浏览(38)
  • js 以鼠标滚轮位置为中心缩放、放大以及边界判断

    js 以鼠标滚轮位置为中心缩放、放大以及边界判断

    项目需求为页面上实现拖拽节点和可以在页面中通过滑动滚轮来缩放节点显示(以鼠标位置为缩放中心点)从而放大到可以看到详细的信息,节点有10000个。特此记录下实现细节 初始化变量 为节点绑定拖拽事件,拖拽事件的边界使用 Math 进行判断,比起 if 判断更加清晰快捷

    2024年02月11日
    浏览(43)
  • Echarts map3D 禁止鼠标滚轮缩放

    Echarts type为map3D 在使用时发现会存在鼠标滚轮缩放的情况 zoomSensitivity属性本质上是是否开启map3D的缩放和平移 所以也可以禁止鼠标滚轮缩放的情况 禁用这个属性就可以实现map3D 禁止鼠标滚轮缩放的需求了

    2024年02月15日
    浏览(40)
  • unity3D 鼠标滚轮实现物体的大小缩放

    鼠标滚轮响应函数是Input.GetAxis(\\\"Mouse ScrollWheel\\\"),函数返回值类型是float,向前滚是返回正数,向后滚是返回负数,且鼠标滚轮滑动单次函数返回值为0.1 利用返回值修改模型transform.localscale,实现模型缩放 鼠标滚轮一直向后滚,会看见模型逐渐变小,当变到很小到消失的时候,

    2024年02月08日
    浏览(45)
  • Win10中Pro/E鼠标滚轮不能缩放该怎么办?

    Win10中Pro/E鼠标滚轮不能缩放该怎么办?

    Pro/E安装好后,鼠标滚轮不能缩放模型,该怎么办?问题多发生在win8/win10上,新装了PROE,发现滑动鼠标中键不能放大缩小。 彩虹图纸管理软件_图纸管理系统_图纸文档管理软件系统_彩虹EDM【官网】 彩虹EDM图纸管理软件系统,由南宁市二零二五科技有限公司 自主研发。为用户

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包