我在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
以及其他对齐标记。
我做错了什么?
答案 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_())
对齐已注释掉:
{{1}}