一般我们设计的普通窗口是这样子的:
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 设置窗口为背景透明
必须要配合这两个一起使用,否则都无法移除背景