Как мне выровнять центральное изображение на QLabel в PyQt5?

В настоящее время я делаю некоторые базовые упражнения. Я пытаюсь переписать какое-то приложение, в котором я использовал 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_()

Что я делаю неправильно?


person cyanidem    schedule 19.01.2020    source источник


Ответы (1)


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

layout.addWidget(label_img, alignment=Qt.AlignCenter)
person eyllanesc    schedule 19.01.2020
comment
Спасибо @eyllanesc, это сработало. Но в полном коде (это был просто релевантный фрагмент) у меня было еще два виджета, метки с текстом с кодом: label_top=QLabel('PLEASE WAIT') label_top.setAlignment(Qt.AlignCenter) label_top.setStyleSheet("font: 20pt Bahnschrift; background-color: #ffd167; color: black") layout.addWidget(label_top) И, несмотря на то, что он не был выровнен по центру окна, текст отображался по центру. Почему метка с текстом отличается от метки с изображением? - person cyanidem; 19.01.2020
comment
@cyanidem Лорд, я решаю проблему только с помощью предоставленного вами кода. Если у вас есть другие скрытые коды, вам трудно (часто невозможно) помочь. - person eyllanesc; 19.01.2020
comment
@cyanidem Как я уже сказал, невозможно помочь вам, если вы поместите код в комментарии (код выглядит ужасно), если вы хотите помочь создать новый пост, содержащий необходимую информацию. Я рекомендую вам прочитать Как задать вопрос, Как ответить и пройдите тур - person eyllanesc; 19.01.2020
comment
Да, я пытаюсь. Случайный ввод опубликовал неполный комментарий, извините. - person cyanidem; 19.01.2020
comment
Я попытался опубликовать новый вопрос, но вы можете отправлять сообщения только раз в 90 минут. Так что придется немного подождать. В любом случае спасибо, @eyllanesc. - person cyanidem; 19.01.2020