2014-09-12 63 views
0

我想使用PyQt4或PySide进口,以安装者为准。出于某种原因,虽然我不能做到这一点:从PySide或PyQt4导入

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部分之间重复的好方法。有没有更好的办法?是否有只使用进口*任何伤害:

try: 
    from PyQt4 import QtGui, QtWebKit, QtCore 
    from PyQt4.QtGui import * 
    ... 
except ImportError: 
    from PySide import QtGui, QtWebKit, QtCore 
    from PySide.QtGui * 
    ... 

至少削减必要重复的量?

+0

都能跟得上它没有坏处,通常,在一边做'进口*然而,一旦'就会造成名称冲突等一类/功能可能不是你期待的那样。 – robbrit 2014-09-12 16:55:47

回答

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() 
...