我想创建一个适用于PyQt4和PyQt5的应用程序。
首先,我可以创建兼容性模块compat.py
,如果找不到PyQt5,它将回退到PyQt4:
try:
__import__('PyQt5')
use_pyqt5 = True
except ImportError:
use_pyqt5 = False
if use_pyqt5:
from PyQt5.QtGui import QIcon as QIcon
else:
from PyQt4.QtGui import QIcon as QIcon
之后,我可以从该模块导入与Qt相关的类,并检查compat.use_pyqt5
PyQt4 / 5在逻辑上有什么不同。
问题是我想让Qt版本可配置并依赖于命令行选项 - 并且它们被加载到不同的模块中。
答案 0 :(得分:1)
问题不在于支持PyQt4和PyQt5。所有它真正的问题是:如何全局访问命令行选项?
一种解决方案是将options
对象添加到处理命令行选项的模块中。此对象可以是一个简单的命名空间,用于存储读入的任何选项,并提供适当的默认值。然后,您需要确保{<1}}对象在被任何其他可能需要它的模块导入之前已完全初始化。
有了这个,你就能做到这样的事情:
options