繁体   English   中英

如何在 python pyqt5 中制作透明十字符号

[英]How to make transparent cross symbol in python pyqt5

有谁知道如何使我的十字准线透明或不透明?

我试图制作一个看起来像这样的十字准线:

在此处输入图像描述

这是代码:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Crosshair(QtWidgets.QWidget):
    def __init__(self, parent=None, windowSize=24, penWidth=2):
        QtWidgets.QWidget.__init__(self, parent)
        self.ws = windowSize
        self.resize(windowSize+1, windowSize+1)
        self.pen = QtGui.QPen(QtGui.QColor(0,255,0,255))
        self.pen.setWidth(penWidth)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.WindowTransparentForInput)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
        self.move(QtWidgets.QApplication.desktop().screen().rect().center() - self.rect().center() + QtCore.QPoint(1,1))


    def paintEvent(self, event):
        ws = self.ws
        d = 241
        painter = QtGui.QPainter(self)
        painter.setPen(self.pen)
        # painter.drawLine( x1,y1, x2,y2    )
        painter.drawLine(ws/2, 0,               ws/2, ws/2 - ws/d)   # Top
        painter.drawLine(ws/2, ws/2 + ws/d,     ws/2, ws)   # Bottom
        painter.drawLine(0, ws/2,               ws/2 - ws/d, ws/2)   # Left
        painter.drawLine(ws/2 + ws/d, ws/2,     ws, ws/2)   # Right


app = QtWidgets.QApplication(sys.argv)

widget = Crosshair(windowSize=241, penWidth=2.5)
widget.show()

sys.exit(app.exec_())

您可以使用 QPainter 中的setOpacity() function。

您可以在此处查看文档

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Crosshair(QtWidgets.QWidget):
    def __init__(self, parent=None, windowSize=24, penWidth=2, opacity=1):
        QtWidgets.QWidget.__init__(self, parent)
        self.ws = windowSize
        self.resize(windowSize+1, windowSize+1)
        self.pen = QtGui.QPen(QtGui.QColor(0,255,0,255))
        self.pen.setWidth(penWidth)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.WindowTransparentForInput)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
        self.move(QtWidgets.QApplication.desktop().screen().rect().center() - self.rect().center() + QtCore.QPoint(1,1))
        self.opacity = opacity


    def paintEvent(self, event):
        ws = self.ws
        d = 241
        painter = QtGui.QPainter(self)
        painter.setOpacity(self.opacity)
        painter.setPen(self.pen)
        # painter.drawLine( x1,y1, x2,y2    )
        painter.drawLine(ws/2, 0,               ws/2, ws/2 - ws/d)   # Top
        painter.drawLine(ws/2, ws/2 + ws/d,     ws/2, ws)   # Bottom
        painter.drawLine(0, ws/2,               ws/2 - ws/d, ws/2)   # Left
        painter.drawLine(ws/2 + ws/d, ws/2,     ws, ws/2)   # Right


app = QtWidgets.QApplication(sys.argv)

widget = Crosshair(windowSize=241, penWidth=2.5, opacity=0.5)
widget.show()

sys.exit(app.exec_())

希望这可以帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM