我正在使用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/