使用QLabel在另一个显示图像的QLabel上显示文本已经变得如此痛苦

时间:2013-12-15 04:09:53

标签: qt pyqt pyside qlabel

这很简单,但我无法弄清楚为什么叠加文字没有显示在另一个QLabel的顶部,

这是我的代码,它将带有文本的叠加标签设置到显示图像的另一个现有标签

def _buildUi(self):
    self.label = QtGui.QLabel()
    self.overlayExifText = QtGui.QLabel(self.label)
    self.overlayExifText.setSizePolicy(QtGui.QSizePolicy.Ignored,
        QtGui.QSizePolicy.Ignored)
    self.overlayExifText.setStyleSheet("QLabel { color : blue; }")
    self.overlayExifText.setAlignment(QtCore.Qt.AlignTop)
    self.label.setBackgroundRole(QtGui.QPalette.Base)
    self.label.setSizePolicy(QtGui.QSizePolicy.Ignored,
        QtGui.QSizePolicy.Ignored)
    self.label.setAlignment(QtCore.Qt.AlignCenter)
    self.setCentralWidget(self.label)

这是更新当前图像的文本的方法

def showImageByPath(self, path):
    if path:
        self.overlayExifText.setText("\n".join(list(utils.getExifData((path)))))
        image = QtGui.QImage(path)
        pp = QtGui.QPixmap.fromImage(image)
        self.label.setPixmap(pp.scaled(
                self.label.size(),
                QtCore.Qt.KeepAspectRatio,
                QtCore.Qt.SmoothTransformation))

只有文字的第一个字母可见。我也尝试设置一些默认文本,然后显示带有黑色背景的文本,然后该区域还显示了上面第二种方法产生的更多数据。有关完整代码,请查看此repo

1 个答案:

答案 0 :(得分:1)

按照方法同时显示图像和文本非常有用:

  • 将图像设置为标签上的背景图像:

    label.setStyleSheet("background-image: url(:/1.png);")

  • 设置要在图像顶部显示的文字:

    label.setText("text") ..