Этот вопрос старый, но для всех, кто попадает сюда, как и я, это мое решение, основанное на ответе Джареда:
self.img = QImage('fname.png')
pixmap = QPixmap(QPixmap.fromImage(self.img))
img_label = QLabel()
img_label.setPixmap(pixmap)
img_label.mousePressEvent = self.getPixel
def self.getPixel(self, event):
x = event.pos().x()
y = event.pos().y()
c = self.img.pixel(x,y) # color code (integer): 3235912
# depending on what kind of value you like (arbitary examples)
c_qobj = QColor(c) # color object
c_rgb = QColor(c).getRgb() # 8bit RGBA: (255, 23, 0, 255)
c_rgbf = QColor(c).getRgbf() # RGBA float: (1.0, 0.3123, 0.0, 1.0)
return x, y, c_rgb
Убедитесь, что размер этикетки соответствует размеру изображения, в противном случаеКоординаты мыши x и y необходимо преобразовать в координаты изображения.И я думаю, также возможно использовать метод .pixel()
непосредственно на растровом изображении, но объект QImage, кажется, работает лучше в моем случае.