2017-01-26 19 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) 

しかし、私は次のエラーを取得する:PyQt's documentationで参照されている、

label.setAlignment(Qt.AlignCenter)

AttributeError: module 'PyQt5.Qt' has no attribute 'AlignCenter'

しかしQt.AlignCenterだけでなく、他のアライメントのフラグだけでなく、 Qt's documentation

私は間違っていますか?

+0

を私は私が見つけた解決策と一緒に、この質問を投稿しています。これは本当に特殊なケースかもしれませんが、ドキュメントをあまりにも急いで読んでいるので、この状況になっている可能性があります。しかし、私はその命名が混乱していると信じており、私は同じ状況になるかもしれない人々を助けたい。 –

答えて

2

呼び出されたAttributeErrorは、AlignCenterという属性を持たないPyQt5.Qtに属していないことを示します。

これは簡単にPythonのインタラクティブヘルプで確認することができます。

>>> from PyQt5 import Qt 
>>> help(Qt) 

helpは、メソッドの束が表示されますが、「アライメント」のクイック検索はゼロ結果が得られます。

実際、AlignCenterフラグはPyQt5.Qtモジュールに属しませんが、PyQt5.QtCore.Qtクラスに属しています。

したがって、右の輸入と一緒に

label.setAlignment(QtCore.Qt.AlignCenter) 

label.setAlignment(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

関連する問題