关于python:Qt没有属性’AlignCenter’

Qt has no attribute 'AlignCenter'

本问题已经有最佳答案,请猛点这里访问。

我在python 3.5上使用pyqt5。

我想制作一个以文本为中心的QLabel小部件。因此,我使用AlignCenter标志调用setAlignment方法。

这是一个mwe:

1
2
3
4
5
6
7
import sys
from PyQt5 import QtWidgets, Qt

app = QtWidgets.QApplication(sys.argv)

label = QtWidgets.QLabel()
label.setAlignment(Qt.AlignCenter)

但是,我得到以下错误:

label.setAlignment(Qt.AlignCenter)

AttributeError: module 'PyQt5.Qt' has no attribute 'AlignCenter'

但是,在Pyqt的文档和qt的文档中引用了Qt.AlignCenter以及其他对齐标志。

我做错什么了?


提出的AttributeError表示PyQt5.Qt没有名为AlignCenter的属性。

这很容易在python的交互式帮助中得到确认:

1
2
>>> from PyQt5 import Qt
>>> help(Qt)

help将显示许多方法,但快速搜索"对齐"将得到零结果。

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

因此,改变

1
label.setAlignment(Qt.AlignCenter)

进入之内

1
label.setAlignment(QtCore.Qt.AlignCenter)

随着正确的进口将做这项工作。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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_())

Centered text label

在对中注释掉后:

1
2
3
4
5
6
7
8
9
10
11
12
13
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_())

氧化镁