在使用PyQt5的某些接口中,将button设为QPushButton。如果我们想使用给定的保存图像image.jpg为按钮设置图标,我们通常会编写:
button.setIcon(QtGui.QIcon("image.jpg"))
但是,如果给我一个n维的numpy数组array,它也代表一个图像,我不能简单地编写button.setIcon(QtGui.QIcon(array)),因为它会给出错误消息。我该怎么做呢?(不考虑将数组保存为图像,因为我希望将大量数组放入PushButton中)
编辑:
对于典型情况,请考虑:
import numpy
array = numpy.random.rand(100,100,3) * 255然后,array是一个表示图像的方形数组。要看到这一点,我们可以编写(我们不需要使用PIL或Image来解决我们的问题,这只是一个演示):
from PIL import Image
im = Image.fromarray(imarray.astype('uint8')).convert('RGBA')参考资料:100x100 image with random pixel colour
我想让这个固定的数组成为一个图标。
发布于 2022-05-08 22:35:52
您必须构建一个QImage -> QPixmap -> QIcon:
import numpy as np
from PyQt5.QtGui import QIcon, QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QPushButton
app = QApplication([])
array = (np.random.rand(1000, 1000, 3) * 255).astype("uint8")
height, width, _ = array.shape
image = QImage(bytearray(array), width, height, QImage.Format.Format_RGB888)
# image.convertTo(QImage.Format.Format_RGB32)
button = QPushButton()
button.setIconSize(image.size())
button.setIcon(QIcon(QPixmap(image)))
button.show()
app.exec_()https://stackoverflow.com/questions/72164965
复制相似问题