在一个应用程序中支持PyQt4和PyQt5的常用方法是什么?

时间:2015-11-28 18:34:18

标签: python qt pyqt pyqt4 pyqt5

我想创建一个适用于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版本可配置并依赖于命令行选项 - 并且它们被加载到不同的模块中。

1 个答案:

答案 0 :(得分:1)

问题不在于支持PyQt4和PyQt5。所有它真正的问题是:如何全局访问命令行选项?

一种解决方案是将options对象添加到处理命令行选项的模块中。此对象可以是一个简单的命名空间,用于存储读入的任何选项,并提供适当的默认值。然后,您需要确保{<1}}对象在被任何其他可能需要它的模块导入之前已完全初始化

有了这个,你就能做到这样的事情:

options