python - 来自 Base64 的 PyQt4 setWindowIcon

标签 python python-2.7 pyqt pyqt4

由于我在使用 pyinstaller 卡住时在 PyQt4 脚本中包含图像时遇到了很大的麻烦,因此我认为 base64 会是一个更好的主意。如何将它用于 PyQt4 中的 setWindowIcon() 函数。

最佳答案

在下一部分中,我将展示如何将 Base64 图像转换为图标:

import sys
from PyQt4 import QtCore, QtGui


def iconFromBase64(base64):
    pixmap = QtGui.QPixmap()
    pixmap.loadFromData(QtCore.QByteArray.fromBase64(base64))
    icon = QtGui.QIcon(pixmap)
    return icon


image_base64 = b"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAArxJREFUWIXtlktsjFEUx3/3mD5U7TRCCEnrOSUSjXZKpzOlNBWxssBCY9MFIZEQLGwkCLESCZaVWIiIVDRB+tTqDBmpMl+FpEiwIQTxaqf3WJhOKp0xD+0sxH/33XvO+f1yv3y5H/zPv5r26nn5CiZZXdyC9vJF841xNaLUqdiFiuQLvFe1DxBzhZwvF/2dL7+P7WmpK8kr+Ji7A3QrVsoQCrE2AvIE4XpEXWfXBR6+TirQUeE+oIajBnITWavaQVW21QQHggCdFUtXqeolRIoT9mC/ouagP+CcSSjQ4XEfAw4lGjI2Fv1mrKkHUNEWwUxNpQ847usNHx4n0Fa5ZLOoXEtxyC8Jy2cBg1CYTh9WN/uCTjOAAFzesmUKKqfSGgKIMD1tOICY0xplC8DMV+FqgQVpD8o8JZ2V7uqYgCr+LMKJMn8TmJ1tAazOjQlgTCTrAmKGYwLG6GC2+QZ9FhNQw81sC4iV2zEB/12nD+jOHt72eIOP+2MC0exTGJp8to1Y69o7+hgT8PWG74vqnkkXELOrJvgoNE4AoDrgnFf0yGSxFT3k63UujF2Lex13eJaeBLN/guknfIHwuIsu4Q9Du8d9zkDjhLCVs/5AeHe8vYQCCtLhcTcZ2P5XcLTJ1+s0GNB4+xJvMWpmyZ3RoNCcOdxefTvHvTMRPMr5c1rqSvIKPuTdQFibFlztraJPZlOp4/zx004qAHBz+fJpOVMjt0WMJzW87SkcKlhfFgp9TVaZ8BWMzYb+/i8mP6ceS1+yWoUHw0MFG1OBQ4onMJquNSuK7PCPLkQWx9u32AEzNOL1h56+S3VmSicwGm9331tVVy3wYjxcn1vNrU0HDmmewGhaK93FxnJHDLMA1PLGlSNVVd2P0r7WMxIAaF29xD3FSieAjKjXe89xMp2VcdorS8vaypetzDp4IvMTCqn5D13V18YAAAAASUVORK5CYII="


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    icon = iconFromBase64(image_base64)
    w.setWindowIcon(icon)
    w.show()

    sys.exit(app.exec_())

输出:

enter image description here

<小时/>

使用以下脚本,您可以从图像中获取 base64:

from PyQt4 import QtCore, QtGui

def Base64ToBytes(filename):
    image = QtGui.QImage(filename)
    ba = QtCore.QByteArray()
    buff = QtCore.QBuffer(ba)
    image.save(buff, "PNG")
    return ba.toBase64().data()

if __name__ == '__main__':
    val = Base64ToBytes("/path/of/image")
    print(val)

关于python - 来自 Base64 的 PyQt4 setWindowIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52293422/

相关文章:

python - PyQt/PySide 中是否需要 deleteLater()?

python - 绑定(bind)到 tkinter 中每个键的键绑定(bind)

python - Sqlalchemy 类不可迭代/无法将关系转换为集合

python - 使用 pyinstaller 时 .exe 文件过大

python - 使用Python ruamel.yaml,在往返模式下加载时失去 anchor ?

python-2.7 - 为什么 python 的内置 sum 函数在用于展平列表列表时速度很慢?

python - 从 Github 导入 Python 库

python - 如何在Python 2到3升级中修改 "{:<25}"格式

qt:我想禁用为 QTreeView 自动设置的键绑定(bind)

python - 在 QListWidget 上自定义 PyQt 多点触控平移手势