Как выровнять центральное изображение на QLabel в PyQt5? - PullRequest
1 голос
/ 19 января 2020

Я новичок в python и в настоящее время делаю некоторые базовые c упражнения. Я пытаюсь переписать какое-то приложение, в котором я использовал tkinter, чтобы сделать то же самое с PyQt5. Все работает отдельно от одной проблемы - у меня есть QLabel, содержащий изображение, и я пытаюсь выровнять изображение по центру метки, но это не нужно, изображение остается выровненным по левому краю. Код ниже:

from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout, QPushButton, QFileDialog
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon, QPixmap

app=QApplication([])
window=QWidget()
window.setFixedSize(500,500)

layout=QVBoxLayout()

label_img=QLabel()
label_img.setFixedSize(300, 300)
label_img.setAlignment(Qt.AlignCenter)
image = QFileDialog.getOpenFileName(None,'Select file','D:\_Download', "Image files(*.png *.jpg *.jpeg *.gif)")
imagePath = image[0]
pixmap = QPixmap(imagePath)
pixmap.scaledToHeight(label_img.height(), Qt.SmoothTransformation)
label_img.setPixmap(pixmap)
layout.addWidget(label_img)

window.setLayout(layout)
window.show()
app.setStyle('Fusion')
app.exec_()

Что я делаю не так?

1 Ответ

1 голос
/ 19 января 2020

QPixmap центрируется на QLabel, но проблема в том, что QLabel не центрируется относительно окна. Таким образом, вы должны центрировать виджет, изменив на:

layout.addWidget(label_img, <b>alignment=Qt.AlignCenter</b>)
...