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

标签 python python-3.x qt pyqt5 qt5

对于我的应用程序,我需要设置一些小部件参数,例如对齐方式 (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/

相关文章:

Python:舍入误差扭曲了均匀分布

python - datetime.date : TypeError: an integer is required. 为什么?

python - 有没有办法获得 pandas 中前两列的平均值?

qt - 在 QTableView 列中显示 QAbstractListModel 项目

c++ - 启用 ItemClipsChildrenToShape 后,如何在 QGraphicsScene 中进行精确的鼠标事件处理?

Python电子邮件lib message_from_bytes函数错误

python - Matplotlib 的内置区间图

python - 一个接一个地遍历两个列表

python - 为什么 df ["ColumA"] = df_2 ["ColumnB"] 没有按预期工作?

c++ - 如何从计算线程到GUI线程获取结果-我需要QSharedMemory吗?