我在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”
但是PyQt的文档和Qt的文档中Qt.AlignCenter
都引用了以及其他对齐标记。
我究竟做错了什么?
该AttributeError
所提出告诉PyQt5.Qt
有没有所谓的属性AlignCenter
。
这可以在Python的交互式帮助中轻松确认:
>>> from PyQt5 import Qt >>> help(Qt)
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_())