1

我正在尝试使用 PyQt4 中的 QWebView 进行一些基本的操作。我只想加载一个 URL。奇怪的是,当我将 QWebView 放在函数调用中时,它不起作用,但是当它内联时,它确实起作用。

因此,以下代码按预期工作:

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 代码移动到函数中时,如下所示,Web 视图永远不会打开。相反,应用程序似乎只是挂起。

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

这里发生了什么?这似乎没有意义。

4

1 回答 1

1

openPage您将 Web 视图对象绑定到局部变量时web。当变量超出范围时(函数返回时),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_())
于 2013-11-12T07:44:32.890 回答