私のアプリケーションでは、整列(Qt::AlignBottom
)などのウィジェットパラメータを設定する必要があります。しかし、私はそれらをインポートすることはできません(他のPyQt5スタッフの輸入に問題はありません)。私はエラー以下しまっQt :: namespase(Qt5、Python3.x)からインポートするには?
from PyQt5 import Qt
progressBar = QProgressBar(splash)
progressBar.setAlignment(Qt.AlignBottom)
このコードを使用して
:
Traceback (most recent call last):
File "run_app.py", line 50, in <module>
runSemApp(sys.argv)
File "run_app.py", line 32, in runSemApp
progressBar.setAlignment(Qt.AlignBottom)
AttributeError: 'module' object has no attribute 'AlignBottom'
そして、このいずれかを使用して動作します:
from PyQt5.Qt import *
progressBar = QProgressBar(splash)
progressBar.setAlignment(Qt.AlignBottom)
私はsollutionを働いてきたけれども、私は唯一のインポートしたいですQt.AlignBottom
であり、*
ではありません。そして、なぜQt.AlignBottom
はfrom PyQt5 import Qt
で動作しませんか?
ここで混乱するのは、PyQtには 'Qt'という特別な仮想モジュールがあり、*すべて*を単一の名前空間にインポートするということです。これは非常に便利な機能ですが、 'QtCore.Qt'との名前の衝突は避けられませんでした。 OPの最初の例では、幾分不思議な 'Qt.Qt.AlignBottom'を使ってエラーを「修正」することができます。しかし明らかに、 'QtCore'から明示的にインポートする方がずっと良い解決策です。 PyQt5パッケージは* lazy loader *なので、import PyQt5は他のモジュールにアクセスすることなく空の名前空間をインポートするだけです。 – ekhumoro
@ echumoro、答えとしてあなたのコメントを投稿すれば私はそれを受け入れます。 –