半透明/不透明窗口内的透明矩形

时间:2021-02-16 22:12:40

标签: python python-3.x user-interface pyqt5

我目前正在开发一款“截图工具”应用。截取过程中,整个屏幕应该变成半透明的白色,同时截取的区域应该是透明的。到目前为止,我已经设法使整个屏幕变成半透明的白色,但我不确定如何使剪切区域透明。我怎样才能做到这一点?

这是我到目前为止的代码,它产生一个半透明的窗口

from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QSizeGrip
import cv2
import sys
import time
import numpy as np


class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = "Frameless"
        self.xpos = 0
        self.ypos = 0
        self.width = QDesktopWidget().availableGeometry().bottomRight().x()
        self.height = QDesktopWidget().availableGeometry().bottomRight().y()
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.xpos, self.ypos, self.width, self.height)
        self.setWindowOpacity(0.5)

        flags = QtCore.Qt.WindowFlags(
            QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)
        self.show()


def window():
    app = QApplication(sys.argv)
    win = Window()
    sys.exit(app.exec_())


window()

0 个答案:

没有答案