我在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)
Run Code Online (Sandbox Code Playgroud)
但是,出现以下错误:
label.setAlignment(Qt.AlignCenter)
AttributeError:模块“ PyQt5.Qt”没有属性“ AlignCenter”
但是PyQt的文档和Qt的文档中Qt.AlignCenter都引用了以及其他对齐标记。
我究竟做错了什么?
该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)
| 归档时间: |
|
| 查看次数: |
5264 次 |
| 最近记录: |