2017-01-26 41 views
0

我在Python 3.5上使用PyQt5。Qt沒有屬性'AlignCenter'

我想製作一個帶有居中文本的QLabel小部件。因此,我使用AlignCenter標誌調用setAlignment方法。

這裏是一個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: module 'PyQt5.Qt' has no attribute 'AlignCenter'

Qt.AlignCenter,以及其他的對準標誌,在PyQt's documentation被引用,以及Qt's documentation

我在做什麼錯?

+0

我張貼與我找到了解決沿這個問題。這可能是一個非常具體的案例,我可能遇到了這種情況,因爲我太匆忙地閱讀文檔。不過,我確實相信這個命名很混亂,我想幫助那些可能遇到相同情況的人。 –

回答

2

提出的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_()) 

Centered text label

與定位註釋掉:

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

Untouched label