Qt没有属性“ AlignCenter”

Rig*_*leg 3 python pyqt5

我在Python 3.5上使用PyQt5。

我想制作一个QLabel带有居中文本的小部件。因此,我setAlignmentAlignCenter标志调用该方法。

这是MWE:

import sys
from PyQt5 import QtWidgets, Qt

app = QtWidgets.QApplication(sys.argv)

label = QtWidgets.QLabel()
label.setAlignment(Qt.AlignCenter)
Run Code Online (Sandbox Code Playgroud)

但是,出现以下错误:

label.setAlignment(Qt.AlignCenter)

AttributeError:模块“ PyQt5.Qt”没有属性“ AlignCenter”

但是PyQt的文档Qt的文档中Qt.AlignCenter都引用了以及其他对齐标记。

我究竟做错了什么?

Rig*_*leg 8

AttributeError所提出告诉PyQt5.Qt有没有所谓的属性AlignCenter

这可以在Python的交互式帮助中轻松确认:

>>> from PyQt5 import Qt
>>> help(Qt)
Run Code Online (Sandbox Code Playgroud)

help 将显示一堆方法,但是快速搜索“对齐”将得到零结果。

实际上,该AlignCenter标志不属于PyQt5.Qt模块,而是属于PyQt5.QtCore.Qt类。

因此,改变

label.setAlignment(Qt.AlignCenter)
Run Code Online (Sandbox Code Playgroud)

进入

label.setAlignment(QtCore.Qt.AlignCenter)
Run Code Online (Sandbox Code Playgroud)

正确的导入将完成这项工作。


下面的代码表明这确实有效。我必须在原始代码中添加一些细节以使居中可见。

import sys
from PyQt5 import QtWidgets, QtCore

app = QtWidgets.QApplication(sys.argv)

label = QtWidgets.QLabel()
label.setGeometry(100, 100, 200, 100)
label.setText("Hello world!")
label.setAlignment(QtCore.Qt.AlignCenter)

label.show()

exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

居中文字标签

对齐方式被注释掉:

import sys
from PyQt5 import QtWidgets, QtCore

app = QtWidgets.QApplication(sys.argv)

label = QtWidgets.QLabel()
label.setGeometry(100, 100, 200, 100)
label.setText("Hello world!")
#label.setAlignment(QtCore.Qt.AlignCenter)

label.show()

exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

原始标签

  • 将此作为对任何困惑的 PyQt6 移植者的评论:“QtCore.Qt.AlignmentFlag.AlignCenter”将是 PyQt6 的语法 (19认同)