Мне нужно показать изображение и текст на этикетке, а это мой код:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyLabel(QLabel):
def __init__(self):
super(MyLabel, self).__init__()
def paintEvent(self, QPaintEvent):
pos = QPoint(50, 50)
painter = QPainter(self)
painter.drawText(pos, 'hello,world')
painter.setPen(QColor(255, 255, 255))
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
layout = QHBoxLayout(self)
self.label = MyLabel()
self.pixmap = QPixmap('icon.png')
self.label.setPixmap(self.pixmap)
layout.addWidget(self.label)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
На этикетке отображается только текст, а изображение отсутствует.
Как отобразить как изображение, так и текст на этикетке.
Спасибо за eyllanesc, чтобы решить эту проблему.
Однако у меня есть еще два вопроса.
Я обнаружил, что если я отображаю изображение и текст в paintEvent из MyLable, лайки:
def paintEvent(self, QPaintEvent):
super(MyLabel, self).paintEvent(QPaintEvent)
pos = QPoint(50, 50)
painter = QPainter(self)
painter.drawText(pos, 'hello,world')
painter.setPen(QColor(255, 255, 255))
self.pixmap = QPixmap('C:\\Users\\zhq\\Desktop\\DicomTool\\icon.png')
self.setPixmap(self.pixmap)
Текст отображался поверх изображения, даже если я сначала отображаю текст, а затем отображаю изображение. Почему?
Во-вторых, когда я отображаю изображение и текст в paintEvent MyLabel без супер (MyLabel, self) .paintEvent (QPaintEvent), я обнаружил, что отображается только текст, а изображение отсутствует:
def paintEvent(self, QPaintEvent):
pos = QPoint(50, 50)
painter = QPainter(self)
painter.drawText(pos, 'hello,world')
painter.setPen(QColor(255, 255, 255))
self.pixmap = QPixmap('C:\\Users\\zhq\\Desktop\\DicomTool\\icon.png')
self.setPixmap(self.pixmap)