如何在PyQt5中将QLabel中的图像居中对齐?

4

我目前正在进行一些基础练习。我试图重写一些应用程序,之前使用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个回答

9

QPixmap居中于QLabel,但问题是QLabel相对于窗口并不居中。因此,您应通过更改以下内容来使小部件居中:

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

谢谢@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)尽管没有对齐到窗口中心,但文本显示为居中。为什么带文本的标签行为与带图像的标签不同? - cyanidem
@cyanidem 主啊,我只能解决你提供的代码问题,如果你有其他隐藏的代码,那就很难(通常是不可能)帮助你了。 - eyllanesc
@cyanidem,正如我所说,如果你在评论中放置代码(代码看起来很糟糕),那么帮助你是不可能的。如果你需要帮助,请创建新帖子并提供必要的信息。我建议你阅读[提问]、[回答]和通过[导览]。 - eyllanesc
是的,我在努力。不小心按了回车键,发布了不完整的评论,抱歉。 - cyanidem
我试图发布新问题,但是出现了“您每90分钟只能发布一次”的提示。所以需要等待一会儿。无论如何,谢谢@eyllanesc。 - cyanidem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接