我想使用PyQt4或PySide进行导入,无论安装哪个。出于某种原因,虽然我不能这样做:
from PyQt4 import QtGui
from QtGui import QApplication
而不是最后一行,我必须这样做,我不确定原因:
from PyQt4.QtGui import QApplication
这并不会让我感到太烦恼,但是使用任何安装的库导入多个东西会非常令人沮丧:
try:
from PyQt4 import QtGui, QtWebKit, QtCore
from PyQt4.QtGui import QApplication, QMainWindow, QFrame, QAction, ...
...
except ImportError:
from PySide import QtGui, QtWebKit, QtCore
from PySide.QtGui import QApplication, QMainWindow, QFrame, QAction, ...
...
它变得非常重复。
此外,这不起作用,Python不会允许它:
import PyQt4 as SomeQt
from SomeQt import QtGui
因此,我无法找到减少PyQt4和PySide部分之间重复的好方法。有没有更好的办法?使用import *是否有任何危害:
try:
from PyQt4 import QtGui, QtWebKit, QtCore
from PyQt4.QtGui import *
...
except ImportError:
from PySide import QtGui, QtWebKit, QtCore
from PySide.QtGui *
...
至少减少必要的重复次数?
答案 0 :(得分:1)
我会这样做:
try:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
...
except ImportError:
from PySide.QtCore import *
from PySide.QtGui import *
...
...
QThread()
QApplication()
QWidget()
...
Python社区和最佳实践通常不鼓励进口野生动物。原因是您不必要地污染您的命名空间。就我个人而言,我不关心Qt
,因为每个班级名称都以Q
开头,例如QSomething
。这使得我认为不太可能与我或第三方模块中的其他类名冲突。
为了安全起见,您还可以执行以下操作:
try:
from PyQt4 import QtCore as Qc
from PyQt4 import QtGui as Qg
...
except ImportError:
from PySide import QtCore as Qc
from PySide import QtGui as Qg
...
...
Qc.QThread()
Qc.QApplication()
Qg.QWidget()
...