2015-01-30 5 views
0

QAplication을 다시 실행 한 후에 QWebView에이 문제가 발생하지만 아무 것도 표시되지 않습니다. 이 작은 조각은 문제 displys :QWebView를 다시 열 때 Python/PyQt가 빈 페이지를 표시합니다.

실행시
import sys 
from PyQt4 import QtGui, QtWebKit, QtCore 

app = QtGui.QApplication(sys.argv) 
while True: 
    browser = QtWebKit.QWebView() 
    browser.setUrl(QtCore.QUrl('https://www.google.ca/#q=pyqt')) 
    browser.show() 
    app.exec_() 

, PyQt는에 대한 구글 검색 페이지가 표시됩니다,하지만 난 위젯을 닫으면, 다음 사람 대신 동일한 검색 페이지의 빈 나타납니다. 내가 여기서 뭘 잘못하고 있는지 궁금해?

+0

질문 중 하나가 될 것입니다. 답을 참조하십시오. – Trilarion

답변

1

페이지가 비어있는 이유를 모르겠지만 QApplication.exec_() 번을 여러 번 호출하지 않고도 동일한 기능을 쉽게 얻을 수 있습니다.

같은를 달성 예 : 당신은() 여러 번 app.exec_ 전화를해야하는 이유

from PySide import QtGui, QtCore, QtWebKit 

class MyBrowser(QtWebKit.QWebView): 

    closing = QtCore.Signal() 

    def __init__(self): 
     super().__init__() 

    def closeEvent(self, event): 
     self.closing.emit() 

class MyApp(QtCore.QObject): 

    def __init__(self): 
     super().__init__() 

    def setup(self): 
     self.browser = MyBrowser() 
     self.browser.closing.connect(self.setup) 
     self.browser.setUrl(QtCore.QUrl('https://www.google.ca/#q=pyqt')) 
     self.browser.show() 


app = QtGui.QApplication([]) 
a = MyApp() 
a.setup() 
app.exec_() 
+0

답변 해 주셔서 감사합니다! 실제 응용 프로그램에서 로그인 윈도우 exec_()을 호출 한 다음 사용자에 따라 모든 사용자 별 UI 요소가있는 QMainWindow를 작성하기 때문에 app.exec_()를 루프에서 호출합니다. 사용자가 창을 닫으면 새 로그인 대화 상자가 표시됩니다. – etsinko

+0

@etsinko하지만 app.exec_()를 두 번 이상 호출해야합니까 아니면 다른 방법이 있습니까? – Trilarion

+0

아마 app.exec_()를 반복적으로 호출하는 것을 피할 수있는 방법을 찾을 수 있습니다. 그것은 현재의 코드베이스를 변경하는 것을 포함합니다. app.exec_()에 대한 연속적인 호출이 왜 웹 페이지 렌더링에 영향을 미치는지 궁금합니다. – etsinko