Pyside/Pyqt QLbal设置图片不显示(QLabel无法设置24位深度图片)

目录

问题

在做Python的UI课设时,希望给登录的Widget界面设置背景图片,网上查到的方法基本都是Mainwindows通过setstyleSheet的方法解决,而我的课设由于有多个界面,想要给其中的子界面设置背景
想到的方法是通过QLabel设置图片(借助QPixmap实现)
Pyside/Pyqt QLbal设置图片不显示(QLabel无法设置24位深度图片)
从给定fileName的文件构造一个 pixmap
如果文件不存在或格式未知,则像素图将成为空像素图(null)

class Loginfrm(QWidget):
    def __init__(self):
        super().__init__()
        # 动态加载UI文件
        self.ui = QUiLoader().load('Ui/LoginFrm.ui')
        self.InitUI()
        
    def InitUI(self):
		pixmap = QtGui.QPixmap(r'Image\Picture\1.png')
        print(pixmap)
        # 这里是动态调用UI文件
        self.ui.Label_bg.setPixmap(pixmap)
        # 如果是静态态调用UI文件
        # self.ui.setPixmap(pixmap)

而这个方法一会适用,一会不适用,通过对比发现问题出在图片的位深度上
当读入图片为32位深度时
Pyside/Pyqt QLbal设置图片不显示(QLabel无法设置24位深度图片)
Pyside/Pyqt QLbal设置图片不显示(QLabel无法设置24位深度图片)
当读入图片为24位深度时
Pyside/Pyqt QLbal设置图片不显示(QLabel无法设置24位深度图片)
Pyside/Pyqt QLbal设置图片不显示(QLabel无法设置24位深度图片)
找到问题在于,QPixmap只能读32位深度的图片

解决方法

解决方法就非常简单了,把图片从24位转成32位
这里就不过多介绍了,非常简单
1.利用QQ或者微信截图
2.利用opencv或PIL
3.先用QFile把文件 全部读取,然后再用loadData()加载

发现这个破bug浪费了一天时间。。。

上一篇:QT 绘图设备的总结


下一篇:QCustomPlot 坐标轴添加单位