pyqt6写一个半透明的widget,上面显示图例
时间: 2024-12-25 15:26:10 浏览: 57
在PyQt6中创建一个半透明的QWidget并在其上显示图例,你可以通过`QGraphicsView`、`QPainter`和`QImage`等组件来实现。首先,你需要创建一个窗口并添加一个`QGraphicsScene`,然后设置图形视图的背景为半透明。接下来,在场景中绘制图例,可以使用`QPainter`对`QImage`进行操作。下面是一个简单的示例:
```python
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
from PyQt6.QtGui import QPixmap, QImage, QPainter, QPen, QColor
from PyQt6.QtCore import Qt
class TransparentWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint) # 去除边框
self.setAttribute(Qt.WA_TranslucentBackground) # 设置背景透明
layout = QVBoxLayout()
self.setLayout(layout)
# 创建图形视图和图例标签
self.graphics_view = QGraphicsView(self)
self.legend_label = QLabel(self)
layout.addWidget(self.graphics_view, alignment=Qt.AlignBottom | Qt.AlignLeft)
# 添加图例图片
img_path = "your_legend_image_path.png" # 替换为你图例的实际路径
pixmap = QPixmap(img_path)
scaled_pixmap = pixmap.scaledToWidth(200) # 设置图例大小
self.legend_label.setPixmap(scaled_pixmap)
self.legend_label.setAlignment(Qt.AlignCenter)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing) # 提高圆角效果
# 绘制半透明背景
brush = QColor("#800080", 150) # 颜色值和透明度,可以根据需要调整
painter.fillRect(event.rect(), brush)
def main():
app = QApplication(sys.argv)
widget = TransparentWidget()
widget.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
阅读全文
相关推荐















