Как вставлять/обновлять картинку при определённых действиях (например нажатия на кнопку) в PyQt5?

Как вставлять/обновлять картинку при определённых действиях, например нажатия на кнопку?

Я пробовал просто через def вывести картинку, но в этом случае мне не выводило ничего.

Далее пробовал через raise_(), но и тут ничего не выводится.
Помогите кто может.


Ответы (1 шт):

Автор решения: S. Nick

Чтобы получать быстрые и правильные ответы, вы должны предоставлять минимально-воспроизводимый приме, который демонстрирует проблему.

Из того что вы предоставили, почему-то в комментариях, а не в теле вопроса, видно что вам не хватает в конце метода image(self) строки self.lbl_name.show().

Я немного добавил функциональности и убрал абсолютное позиционирование, т.к. это не практично. Попробуйте.

import sys
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)  

        self.label  = QLabel() 
        self.pixmap = QPixmap("boy.jpg")
        self.label.setPixmap(self.pixmap.scaled(self.label.size(),
                Qt.KeepAspectRatio, Qt.SmoothTransformation))
                                    
        self.label.setSizePolicy(QSizePolicy.Expanding,
                QSizePolicy.Expanding)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setMinimumSize(100, 100) 
       
        self.pushButton = QPushButton('Выбрать изображение')
        self.pushButton.clicked.connect(self.load_image )
        
        layout = QGridLayout(centralWidget)    
        layout.addWidget(self.label)     
        layout.addWidget(self.pushButton)        
        
    def load_image(self):
        imagePath, _ = QFileDialog.getOpenFileName(
            self, 
            "Select Image", 
            ".", 
            "Image Files (*.png *.jpg *.jpeg *.bmp)")
        if imagePath:    
            self.pixmap = QPixmap(imagePath)
            self.label.setPixmap(self.pixmap.scaled(
                self.label.size(), 
                Qt.KeepAspectRatio,
                Qt.SmoothTransformation
            ))        

    def resizeEvent(self, event):
        scaledSize = self.label.size()                       
        scaledSize.scale(self.label.size(), Qt.KeepAspectRatio)
        if not self.label.pixmap() or scaledSize != self.label.pixmap().size():
            self.updateLabel()    

    def updateLabel(self):
        self.label.setPixmap(self.pixmap.scaled(        
            self.label.size(), 
            Qt.KeepAspectRatio,
            Qt.SmoothTransformation
        ))
 
 
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

введите сюда описание изображения


boy.jpg

введите сюда описание изображения

→ Ссылка