Python 截图 快捷键截图,一个基于PyQt5的截图,简易截图,自由截图 --pyqt5 入门

最近心血来潮,就想自己写一个截图的小工具,使用PyQt5实现一个简易的截图工具,按下快捷键就可以进行截图


需要安装的包:

pip install PyQt5
pip install keyboard

思路
  • 截取全屏的图片并保存下来
  • 把截取的图片显示出来,再加上一层阴影
  • 用鼠标选取需要截取的内容并保存下来
  • 选取的部分去掉阴影显示出来
  • 把图片变成图片文件存储起来

具体步骤

1、 初始化窗口,设置鼠标监听,设置十字光标,还有就是设置窗口无边框和窗口全屏。

def initWindow(self):
    self.setMouseTracking(True)     # 鼠标追踪
    self.setCursor(Qt.CrossCursor)  # 设置光标
    self.setWindowFlag(Qt.FramelessWindowHint)  # 窗口无边框
    self.setWindowState(Qt.WindowFullScreen)    # 窗口全屏

2、 获取全屏的图片。

def captureFullScreen(self):
    self.fullScreenImage = QGuiApplication.primaryScreen().grabWindow(QApplication.desktop().winId())

3、 填充步骤一获取到的全屏图片到窗口, 并重写paintEvent事件, 使用QPainter来绘制全屏的图片到窗口。

def paintBackgroundImage(self):
    shadowColor = QColor(0, 0, 0, 100)  # 黑色半透明
    self.painter.drawPixmap(0, 0, self.fullScreenImage)
    self.painter.fillRect(self.fullScreenImage.rect(), shadowColor)     # 填充矩形阴影

def paintEvent(self, event):
    self.painter.begin(self)    # 开始重绘
    self.paintBackgroundImage()
    penColor = QColor(30, 144, 245)     # 画笔颜色
    self.painter.setPen(QPen(penColor, 1, Qt.SolidLine, Qt.RoundCap))    # 设置画笔,蓝色,1px大小,实线,圆形笔帽
    if self.isMousePressLeft is True:
        pickRect = self.getRectangle(self.beginPosition, self.endPosition)   # 获得要截图的矩形框
        self.captureImage = self.fullScreenImage.copy(pickRect)         # 捕获截图矩形框内的图片
        self.painter.drawPixmap(pickRect.topLeft(), self.captureImage)  # 填充截图的图片
        self.painter.drawRect(pickRect)     # 画矩形边框
    self.painter.end()  # 结束重绘

4、 完善步骤三中使用到的getRectangle()函数,意思时鼠标选取需要截取的区域, 利用paintEvent在窗口上显示出来。

def getRectangle(self, beginPoint, endPoint):
    pickRectWidth = int(qAbs
  • 52
    点赞
  • 207
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值