原文链接:https://blog.csdn.net/humanking7/article/details/80707591
在PyQt中常用的图像类有四种,QPixmap,QImage,QPicture,QBitmap
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts折线图的常用方法及灵活运用。
在PyQt中,重新实现拖放事件处理方法,可用于处理自定义数据,或者实现一些特殊的拖放功能。
注意: WorldLayer 位于所有 TransformLayer 之上, 因此会优先获得事件。
1. 继承QWidget类并重载paintEvent、mousePressEvent和mouseMoveEvent函数。在mousePressEvent和mouseMoveEvent函数中,我们处理鼠标点击和滑动事件。当鼠标按下或鼠标移动时,我们也根据鼠标位置计算出对应的值,并设置为当前值,与此同时调用update请求界面更新。
首先我们先获取到当前桌面的完整图片,然后将其放到一个全屏的透明窗口之中,之后,我们在窗口上进行绘制矩形操作,然后获取到绘制的区域即可。
在学习 PyQt5 的过程中我会不断地做一些小的 Demo,用于让自己能够更好地理解和学习,这次要做的就是一个图片查看器,主要功能包括打开图片、拖动图片、放大和缩小图片。
在继承了 QWidget 窗口类以后,我们可以实现很多父类提供的虚函数,其中就包括鼠标的诸多消息处理函数,比如 mousePressEvent(鼠标单击消息)、mouseReleaseEvent(鼠标弹起消息)等等,这些虚函数我们可以通过 Qt 的帮助文档查看,如下:
相信很多小伙伴都曾在抖音、快手以及 B 站等平台刷到过表白程序,不论是各种的程序制作爱心或者是程序制作心动符号等,在各个平台很受欢迎。但是其中大多数形式都已经被公众所知晓,且缺乏流动性。故今天我们将自行设计一个表白浪漫程序,具有动态开关宠物、照片墙、弹窗提示以及 turtle 画图等功能。其中具体效果图如下:
本篇博客介绍如何利用qMediaPlayer和qvideowidget实现视频文件(avi,mp4….)的播放,并且提供进度显示,还可以通过拖动进度条来变换播放位置。相关代码可以在我的资源里下载”基于qt的视频播放器”
可以通过QT的重绘事件和鼠标事件来绘制多边形,最简单的办法就是在继承QWidget的窗体中重写paintEvent、mousePressEvent等事件处理函数。QT提供了图形绘制接口QPainter,通过该接口可以绘制多种图形,包括多边形。
SVGEdit 一款非常老牌的 SVG 图形编辑器,用于编辑处理 SVG,star 数目前是 5.8k。
重载QGraphicsScene相关的鼠标事件,想得到当前鼠标的坐标点,如果直接从mouseEvent取坐标,返回的坐标点全是0。
前面的文章mapboxGL卷帘里面实现的时候已经有涉及多图联动了,本文在此基础上进一步优化,加入鼠标位置展示。
一、Qt图形绘制 自己在Qt开源社区在自学yafeilinux前辈的《Qt快速入门系列教程》中的图形篇,结合所学的知识,可以做一个涂鸦板实例
在介绍截图工具设计与实现前,让我们先通过介绍QT的绘图基础知识,让读者有一个比较感性的认识。
Qt最大的优势就是各种库非常全,尤其在图表方面,在5.7版本之后虽然引入了原本企业版才有的QCharts,但相对于只有2个文件就可以引入库的QCustomPlot来说还是太臃肿了。 这里解决一个使用图表的都会碰到的问题–跟随鼠标显示值,在QCustomPlot里非常简单,可以直接看下面的效果图。
今天我们来实现自定义标题栏的实现,这里面用到了布局,鼠标事件重写等知识点,首先还是自定义标题栏的创作,像下面这样,可放大,可缩小,并且随着窗体大小的改变,控件做自适应调整。有没有感觉狗子的界面做的越来越好看,哈哈,其实只是想告诉大家,孰能生巧,第一次可能很丑,慢慢来嘛,我第一次也被人喷过。废话不多说,看实现。
import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPixmap, QPainter, QCursor, QBitmap from PyQt5.QtCore import Qt
一般自定义标题栏时,就需要将原窗口的标题栏隐藏掉。默认情况下窗口无法被鼠标拖动的,需要自己处理鼠标事件,移动窗口达到拖动效果。
自国务院印发《推进普惠金融发展规划(2016—2020年)》通知以来,各省、自治区、直辖市人民政府、国务院各部委各直属机构积极响应,认真贯彻执行,普惠金融发展已经进入了高潮阶段,各大互联网公司和高校紧跟时代潮流,推出了各种创新性产品和软件,该软件作为一款以培养兴趣,提高学生软件项目的编程项目能力为目的,所创建的一款实用性的软件,以日历为依托,创建了许多相关的特效,优美界面和天气查询、日程管理等实用性功能,且界面等均符合当下青少年的审美需求,是一款紧跟潮流的日历软件
上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些股票软件,也有这种十字线定位线,有时候需要在十字交叉地方获取对应点的数据来显示等。Qt来绘制各种效果还是非常方便的,还是那句话:心中有坐标,万物皆painter。
设置setWindowFlag(Qt::FramelessWindowHint)即可无边框窗口,但无法移动和改变大小。
Graphics View提供了QGraphicsScene类,用于管理从QGraphicsItem类派生的大量定制2D图形项目,并与之交互;还提供了QGraphicsView小部件,用于可视化项目,并支持缩放和旋转。
近期Github开源了一款基于Python开发、名为Textshot的截图工具,刚开源不到半个月已经500+Star。
恢复的话重新设置下轴的最大最小范围setRange即可。这里介绍下鼠标左键单击实现恢复的办法:
完整代码链接:https://github.com/gongjianbo/MyTestCode/tree/master/Qt/MyTabWidget
事件是指诸如,移动鼠标,点击按钮,定时器,按下键盘等。他们是由系统或者Qt发出的。所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数)。也就是说当我们的界面显示以后,程序就进入了事件循环。程序在等待事件的发生,假设你的界面上可能有3个按钮,那么程序不肯能一个按钮一个按钮的向下执行,他需要等你按下按钮才行。只有你按下了按钮。那么相应的事件才会发生。事件驱动的设计模式改变了以往程序线性执行的方式。
如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助!
工程下载地址: https://download.csdn.net/download/xiaolong1126626497/21043499
所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的,当然也有其他的事件产生方式,比如网络的连接,窗口管理器或者定时器等。调用应用的exec_()方法时,应用会进入主循环,主循环会监听和分发事件。
然后,我们为鼠标和按键事件实现自定义逻辑。例如,按"+"键将放大,而按"-"键将缩小。
Qt 5.7过后Qt添加了官方的Chart库,之前就用的比较习惯,这次把源码发出来,给入门的同学们参考参考.
1.PyQt5 的常用的布局方式,这里使用到了QVBoxLayout,QHBoxLayout,如何灵活运用这些布局;
在网上能看到的图像标注版本多是图像标注版本1的代码,但图像标注不仅只保存一个标注框,通常都是多个标注框,而且要把这些标注框信息记录下来,当然代码也是在网上找到的,做了一些改动。
本篇使用Qt来实现一个可以查看任意目录下图片的图片查看器,可以电脑中任意目录下图片的查看,并且可以通过鼠标滚轮以及鼠标移动来实现图片的灵活放大、缩小,此外,在打开一个图片后,若该目录下还有其它图片,通过左右切换,可以方便的查看同目录下的其它图片,先来看下最终的效果:
2. 刻度尺交互使用到的事件: mousePressEvent; mouseReleaseEvent; mouseMoveEvent; mouseDoubleClickEvent, 双击事件,用于旋转尺子交互。
关于图像标注软件,业界已经有LabelImg、Labelme、VATIC、Label Studio、Prodigy、Datasaur等开源或商业的工具。
QPalette( [ˈpælət] 调色板)类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm
Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
接着上文:绘制基础图形函数已经全部清楚,然后进阶鼠标拖画。 鼠标拖画,需要用到鼠标事件 鼠标事件: 与C++Qt一样,鼠标事件,需要重载鼠标事件函数如下:
❝使用QPainter画透明时钟,还可拖动。❞ 一、演示 📷 二、实现 画背景图,一个白色圆环,60个圆点和12个数字组成。 📷 QPixmap pixmap = QPixmap(width, height); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.setRenderHint(QPainter::Antialiasing, true); painter.setRenderHints(QPainter::Smooth
基于PyQt5开发了一个可以用于目标跟踪的软件,在开发过程中遇到一个问题,就是如何在PyQt5的组件QLable中自主选定目标框,这个在opencv里面有专门的函数完成这个工作:cv2.selectROI(),我的目的就是在QLabel的基础上,实现类似函数cv2.selectROI()的功能,这样在运行程序的过程中,就能在视频框里面直接选取感兴趣区域。直接贴出实现的最终效果:
import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPixmap, QPainter, QCursor from PyQt5.QtCore import Qt, QTimer
4.0版本在3.0版本基础上增加了双击某个位置时,如果这个位置在标注框内,则对选中的标注框进行标识出来,同时提示是否要删除当前选中的标注框,进行删除处理。
在QSS中,我们可以使用Background或者background-color的方式来设置背景色,设置窗口背景色之后,子控件默认会继承父窗口的背景色,如果想要为控件设置背景图片或图标,则可以使用setPixmap或则setIcon来完成。关于这两个函数的用法,可以参考本博客下的PyQt5的基础控件分栏
领取专属 10元无门槛券
手把手带您无忧上云