PyQt自定义控件之实现全透明窗口

一般我们设计的普通窗口是这样子的:

class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()
        self.resize(320, 240)				# 窗口的大小 
        self.setWindowTitle('Test')			# 窗口标题
        self.setObjectName('MyWidget')		
        self.setStyleSheet("QWidget#MyWidget{background:grey;}")	# 给窗口添加个背景颜色

效果如下:
在这里插入图片描述


给它加个图片

class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()
        
		# 窗口设置
        self.resize(320, 240)				
        self.setWindowTitle('Test')			
        self.setObjectName('MyWidget')		
        self.setStyleSheet("QWidget#MyWidget{background:grey;}")
		
		# 添加个标签图片
        self.label = QLabel(self)
        self.label.setGeometry(120, 80, 66, 66)
        self.label.setPixmap(QPixmap('./image/gift.png'))

效果如下
在这里插入图片描述


好了,现在我们要去除整个背景,只留下中间那个图片

class MyWidget(QWidget):
    '''实现全透明窗口'''

    def __init__(self):
        super(MyWidget, self).__init__()

        # 去除背景
        self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)

        # 窗口设置
        self.resize(320, 240)
        self.setWindowTitle('Test')
        self.setObjectName('MyWidget')
        self.setStyleSheet("QWidget#MyWidget{background:grey;}")

        # 添加个标签图片
        self.label = QLabel(self)
        self.label.setGeometry(120, 80, 66, 66)
        self.label.setPixmap(QPixmap('./image/gift.png'))

效果如下
在这里插入图片描述


这种实现方式主要依靠的是设置窗口的标志位属性值

标志位:Qt.FramelessWindowHint 去除窗口的边框
属性值:Qt.WA_TranslucentBackground 设置窗口为背景透明
必须要配合这两个一起使用,否则都无法移除背景

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值