我想要创建一个同时适用于PyQt4和PyQt5的应用程序。
首先,我可以创建兼容性模块compat.py,如果找不到PyQt4,它就会退回到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相关的类,并检查PyQt4 4/5在逻辑上存在差异的compat.use_pyqt5。
问题是,我想要使Qt版本可配置并依赖于命令行选项,并且它们被加载在不同的模块中。
发布于 2015-11-29 16:30:52
问题并不是要同时支持PyQt4和PyQt5。它真正要问的是:我如何在全球范围内访问命令行选项?
一种解决方案是向处理命令行选项的模块添加一个options对象。此对象可以是一个简单的命名空间,它存储读取的任何选项,并以其他方式提供适当的默认值。然后,您只需要确保options对象在被任何其他可能需要它的模块导入之前已经完全初始化了。
这样的话,你就可以做这样的事情了:
from utils import options
use_pyqt5 = False
if options.try_pyqt5:
try:
import PyQt5
use_pyqt5 = True
except ImportError:
passhttps://stackoverflow.com/questions/33974946
复制相似问题