gpt4 book ai didi

python - 如何从 Qt::namespase (Qt5, Python3.x) 导入?

转载 作者:太空狗 更新时间:2023-10-30 00:34:43 25 4
gpt4 key购买 nike

对于我的应用程序,我需要设置一些小部件参数,例如对齐方式 (Qt::AlignBottom) 等。但我无法导入它们(其他 PyQt5 内容导入没有任何问题)。

使用这段代码

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)

虽然我有一个可行的解决方案,但我只想导入 Qt.AlignBottom 而不是 *。另外,为什么 Qt.AlignBottom 不能与 from PyQt5 import Qt 一起使用?

最佳答案

我认为这里的混淆是 PyQt 有一个名为 Qt 的特殊虚拟模块,它将所有内容 导入到单个 namespace 中。这是一个非常有用的功能,但遗憾的是未能避免名称与 QtCore.Qt 的冲突。

在第一个示例中,可以通过使用看起来有些奇怪的 Qt.Qt.AlignBottom 来“修复”错误。但显然,从 QtCore 显式导入是一个更好的解决方案。还值得注意的是,PyQt5 包是一个惰性加载程序,因此 import PyQt5 将只导入一个空命名空间,无法访问其他模块。

关于python - 如何从 Qt::namespase (Qt5, Python3.x) 导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com