Как вставлять/обновлять картинку при определённых действиях (например нажатия на кнопку) в 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

