Qt没有属性'AlignCenter'

时间:2017-01-26 15:38:21

标签: python pyqt5

我在Python 3.5上使用PyQt5。

我想制作一个带有居中文字的QLabel小部件。因此,我使用setAlignment标记调用AlignCenter方法。

这是一个MWE:

import sys
from PyQt5 import QtWidgets, Qt

app = QtWidgets.QApplication(sys.argv)

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

但是,我收到以下错误:

  

label.setAlignment(Qt.AlignCenter)

     

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

但是Qt.AlignCenter以及PyQt's documentation引用了AttributeError以及其他对齐标记。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

引发的PyQt5.Qt表示AlignCenter没有名为>>> from PyQt5 import Qt >>> help(Qt) 的属性。

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

help

AlignCenter将显示一系列方法,但快速搜索“对齐”将得到零结果。

事实上,PyQt5.Qt标志不属于PyQt5.QtCore.Qt模块,而属于label.setAlignment(Qt.AlignCenter) 类。

因此,改变

label.setAlignment(QtCore.Qt.AlignCenter)

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_())

以及正确的导入将完成工作。

以下代码显示这实际上有效。我必须在原始代码中添加一些细节才能使居中可见。

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_())

Qt's documentation

对齐已注释掉:

{{1}}

Centered text label