2014-09-12 2 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, ... 
    ... 

꽤 반복적입니다.

또한이 파이썬을 허용하지 않습니다 작동하지 않습니다

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

답변

1

난 그냥 다음을 수행합니다 :

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

... 
QThread() 
QApplication() 
QWidget() 
... 

와일드 수입은 보통 파이썬 커뮤니티와 모범 사례에 의해 좌절된다. 그 이유는 네가 네임 스페이스를 불필요하게 오염시키고 있기 때문이다. 모든 클래스 이름이 Q으로 시작하므로 개인적으로는 Qt을 신경 쓰지 않습니다. QSomething. 내 의견이나 제 3 자 모듈의 다른 클래스 이름과 충돌하지 않을 것입니다.

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() 
... 
관련 문제