我正在使用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_())


这里发生了什么?这似乎没有道理。

最佳答案

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

关于python - 当我将PyQt4中的QWebView放入函数中时,它不会打开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19922606/

10-11 11:59