2013-11-12 5 views
1

Я пытаюсь сделать что-то основное с QWebView в PyQt4. Я хочу просто загрузить URL-адрес. Странно то, что когда я помещал QWebView в вызов функции, он не работает, но когда он встроен, он работает.QWebView в PyQt4 не открывается, когда я помещаю его в функцию

Итак, следующий код работает, как ожидалось:

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    web = QWebView() 
    web.load(QUrl('http://www.google.com')) 
    web.setFixedSize(500, 500) 
    web.show() 
    sys.exit(app.exec_()) 

Однако, когда я перехожу код QWebView в функции, как показано ниже, и не открывается веб вид. Вместо этого приложение просто зависает.

def openPage(): 
    web = QWebView() 
    web.load(QUrl('http://www.google.com')) 
    web.setFixedSize(500, 500) 
    web.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    openPage() 
    sys.exit(app.exec_()) 

Что здесь происходит? Это, похоже, не имеет смысла.

ответ

1

В openPage вы привязываете объект веб-представления к локальной переменной web. Веб-представление автоматически уничтожается, когда переменная выходит за пределы области (когда функция возвращается). Вам необходимо оставить ссылку на представление, возможно, на return следующим образом:

def openPage(): 
    web = QWebView() 
    web.load(QUrl('http://www.google.com')) 
    web.setFixedSize(500, 500) 
    web.show() 
    return web 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    web = openPage() 
    sys.exit(app.exec_())