Joh*_*own 5 python python-module pyqt pyside
我想在一个源文件QT.py中做类似的事情:
import sys
import PyQt4
sys.modules["Qt"] = PyQt4
Run Code Online (Sandbox Code Playgroud)
然后在其他源文件中导入此文件,并像这样使用它:
import QT
from Qt.QtCore import *
Run Code Online (Sandbox Code Playgroud)
所以我可以在QT.py中从PyQt4更改为PySide而不触及所有源文件(可能有丑陋的sed脚本)这些模块主要是API兼容,我想测试它们.是否有捷径可寻?(因为我尝试的方式不起作用)
也许我需要imp模块,但它看起来太低了.
更新:找出更符合您要求的方法:
您可以将伪模块构造为:
Qt/
Qt/__init__.py
Qt/QtCore/__init__.py
Qt/QtGui/__init__.py
Run Code Online (Sandbox Code Playgroud)
哪里Qt/__init__.py:
import QtCore, QtGui
Run Code Online (Sandbox Code Playgroud)
Qt/QtCore/__init__.py是:
from PyQt4.QtCore import *
Run Code Online (Sandbox Code Playgroud)
Qt/QtGui/__init__.py是:
from PyQt4.QtGui import *
Run Code Online (Sandbox Code Playgroud)
然后,在您的代码中,您可以按如下方式引用它:
import sys
from Qt import QtGui
app = QtGui.QApplication(sys.argv)
from Qt.QtGui import *
window = QWidget()
window.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
我强烈建议不要from Qt.QtGui import *在代码中使用导入所有内容被认为是不好的形式,因为您会在此过程中丢失所有名称空间。
更新:我喜欢 Ryan 关于条件导入的建议。我建议将其合并到上面的代码中。例如:
Qt/QtGui/__init__.py:
import sys
if '--PyQt4' in sys.argv:
from PyQt4.QtGui import *
else:
from PySide.QtGui import *
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |