一般我們設計的普通窗口是這樣子的:
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 設置窗口爲背景透明
必須要配合這兩個一起使用,否則都無法移除背景