如何制作它以便您可以使用pyqt5在屏幕上绘制

基本上我希望能够在按住鼠标按钮时“在屏幕上”(在透明的全屏窗口上)进行绘制。然而,当我尝试下面的代码时,我只得到一个跟随我的鼠标的点,但实际上并没有画一条线

我希望它在“绘图模式”激活时画一条线,当绘图模式关闭时,我希望能够与下面的窗口进行交互(因为窗口是透明的)。 pyqt 是否可以做到这一点,如果可以,我该怎么做?

import sys
from copy import deepcopy
 
from PyQt5.QtCore import Qt,QPoint
from PyQt5.QtGui import QMouseEvent,QPainter,QPen
from PyQt5.QtWidgets import QApplication,QMainWindow
 
# from widgets import Toolbar
 
 
class Canvas(QMainWindow):
    """The main canvas to draw on"""
    def __init__(self) -> None:
        super().__init__()
 
        self.begin = QPoint()
        self.end = QPoint()
        self.setGeometry(0,1920,1080)
        self.initUI()
 
    def initUI(self):
        # self.setWindowOpacity(0.3)
        self.setWindowflags(Qt.Window | Qt.CustomizeWindowHint | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        # If I uncomment this next line,I can't get the dot to follow my mouse at all
        # self.setattribute(Qt.WA_TranslucentBackground)
 
    def paintEvent(self,event):
        painter = QPainter()
        painter.begin(self)
        painter.setPen(QPen(Qt.magenta,5,Qt.SolidLine))
        painter.drawLine(self.begin,self.end)
        painter.end()
 
    def mousePressEvent(self,event: QMouseEvent) -> None:
        self.begin = event.pos()
 
    def mouseMoveEvent(self,event: QMouseEvent):
        if event.buttons() and Qt.LeftButton:
            self.begin = deepcopy(self.end)
            self.end = event.pos()
            self.update()
 
    def mouseReleaseEvent(self,event: QMouseEvent):
        if event.button == Qt.LeftButton:
            self.begin = QPoint()
            self.end = QPoint()
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Canvas()
    window.show()
    sys.exit(app.exec_())
sacklise 回答:如何制作它以便您可以使用pyqt5在屏幕上绘制

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/42202.html

大家都在问