pyqt5设置窗口透明以及设置图片缩放以填充QLabel

pyqt5设置主窗口透明,但是窗口上的组件不透明

from PyQt5.QtCore import Qt

self.setStyleSheet("background: transparent;border:0px")
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)

注意:窗口透明,组件不透明,必须设置成没有标题栏,以及透明区域不接收鼠标事件,不然在Windows上会出现黑色背景。

设置透明区域接收鼠标事件,会出现下图中的黑色背景,目前没有找到办法去除。

self.setAttribute(Qt.WA_TranslucentBackground, False)

还有一点请注意,就是设置为透明后,透明区域会有鼠标事件穿透。

设置窗口以及其组件都不响应鼠标事件,改为False,就可以接收,透明区域会穿透。

self.setAttribute(Qt.WA_TransparentForMouseEvents, True);

QLabel加载图片,设置图片自动缩放,并填充整个label

也可以不设置label的宽高,我这里是为了设置图标大小,所以设置了固定的宽高,不设置的话图片会自动填充,注意self.label.setScaledContents(True)一定要有,作用是设置QLabel自动缩放,

既:显示图像大小自动调整为Qlabel大小

from PyQt5.QtGui import QPixmap


self.label.setFixedHeight(30)
self.label.setFixedWidth(30)
pix = QPixmap("tool.png")       
# 让图片填充满QLabel
# pix.scaled(self.label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.label.setPixmap(pix)
self.label.setScaledContents(True)

 


版权声明:本文为weixin_43054437原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。