pyqt5 实现屏幕截屏

本文介绍了如何使用PyQT5库实现屏幕截屏功能,包括窗口截取和在截取窗口上绘制标记线条的详细步骤。通过状态机思想设计逻辑,方便调用和操作,最终展示截图效果。
摘要由CSDN通过智能技术生成

最近发现很多时间都浪费在解决以前很久解决过却忘了具体怎么解决的事情上,遂决定也开始在博客上做好记录,也希望能帮助同样咸鱼的屌丝码农,一起copy & paste。。。

先上0注释的一坨shit:

class KxScreenshotDelegate:
    def finishedWithData(self, data):
        pass

class KxScreenshotStatus:
    init = 0
    dragging = 1
    ok = 2
    drafting = 3

class KxScreenshotWidget(QWidget):
    def __init__(self, img, delegate):
        super(KxScreenshotWidget, self).__init__()
        self.startX = 0
        self.staryY = 0
        self.endX = 0
        self.endY = 0
        self.draftPointss = []
        self.img = img
        self.delegate = delegate
        self.status = KxScreenshotStatus.init
        self.setCursor(QtCore.Qt.CrossCursor)
        self.initUI()

    def initUI(self):
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setWindowTitle("screenshot")
        # self.setGeometry(0,0,screen.width(),screen.height())
        # self.setWindowOpacity(0.3)
        palette1 = QtGui.QPalette()
        palette1.setBrush(self.backgroundRole(), QtGui.QBrush(self.img))
        self.setPalette(palette1)
        tipLabel = QLabel("截图模式,按ESC退出,按右键取消选框,按回车发送截图")
        tipLabel.setObjectName("tip")
        tipLabel.setStyleSheet(
            "QLabel#tip{background-color:white;padding:5px;color:black;font-weight:bold;font-size:16px;}")
        vBox = QVBoxLayout()
        tipBar = QHBoxLayout()
        tipBar.addStretch(1)
        tipBar.addWidget(tipLabel)
        tipBa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值