2014-09-12 68 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() 
...