对于我的应用程序,我需要设置一些小部件参数,比如alignment(Qt::AlignBottom
)和其他参数。但是我不能导入它们(其他PyQt5的导入没有任何问题)。在
使用此代码
from PyQt5 import Qt
progressBar = QProgressBar(splash)
progressBar.setAlignment(Qt.AlignBottom)
我得到了以下错误:
^{pr2}$使用这个方法可以:
from PyQt5.Qt import *
progressBar = QProgressBar(splash)
progressBar.setAlignment(Qt.AlignBottom)
虽然我有一个有效的解决方案,但我只想导入Qt.AlignBottom
,而不是{Qt.AlignBottom
不能与{
我认为这里的混淆是PyQt有一个特殊的虚拟模块,名为
Qt
,它将所有的导入到单个名称空间中。这是一个非常有用的特性,但是它与QtCore.Qt
的名称冲突没有避免,这是一个真正的遗憾。在在第一个示例中,可以通过使用看起来有些奇怪的
Qt.Qt.AlignBottom
来“修复”错误。但显然,从QtCore
显式导入是一个更好的解决方案。还值得注意的是,PyQt5
包是一个延迟加载程序,因此import PyQt5
将只导入一个空的命名空间,而不能访问其他模块。在你能做到的
不能导入
AlignBottom
,因为QtCore本身不是一个包,它只是它自己的一个模块(单个文件)。要知道所有包都是模块,但并非所有模块都是包所以这行不通
^{pr2}$查看输出,您可以看到}所属的其他类和方法,您可以使用。在
QtCore
是一个单独的文件,其中包含一个类Qt
,该类包含{另一方面,PyQt5是一个包(包含其他模块的文件夹)指向它的
__init__.py
我建议你读一下关于模块的docs和这个SO问题
相关问题 更多 >
编程相关推荐