PyQT 打开一个带有 JS 警报弹出的网页会得到 SegFault。如何解决?

Posted

技术标签:

【中文标题】PyQT 打开一个带有 JS 警报弹出的网页会得到 SegFault。如何解决?【英文标题】:PyQT open a web page with JS alert pop up will get SegFault. How to fix that? 【发布时间】:2012-01-11 01:09:05 【问题描述】:

我正在学习 PyQT 编程,当我尝试一个简单的测试时,我得到了 Segmentation fault,这是我的代码 pop.py:

#! /usr/bin/python

import sys
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebView

app = QApplication(sys.argv)
v = QWebView()
v.load(QUrl("http://127.0.0.1/j.html"))
v.show()
app.exec_()

我在 127.0.0.1 启动了一个 Apache 服务器进行测试。这是j.html:

<html><script>alert("I am here");</script>
<body>Hello World</body>
</html>

我启动pop.py,打开一个窗口,javascript弹出警告对话框,我点击OK,然后pop.py会出现“Segmentation fault”

我尝试了 PySide,得到了相同的结果。如果 html 中没有 JS 警报,就可以了。这是 QT 的错误还是我错过了什么?

我在 Debian 上使用 python 2.6.6、python-qt4 4.8.3、libqtwebkit4 2.1.0

我也尝试过使用 PyQt4-4.8.3、python 2.7.1 的 Fedora 15,同样的问题

任何建议,搜索线索都会有所帮助。谢谢

【问题讨论】:

我尝试在 QT 中使用 cpp 编码,绕过 python,同样的问题。 我发现有一个关于这个问题的错误报告:bugs.webkit.org/show_bug.cgi?id=57414,这里是代码:developer.qt.nokia.com/forums/viewthread/4760 是的,您似乎自己找到了答案。一个主干版本的 webkit 可以工作,但一个发货似乎有这个问题。 您可以回答自己的问题(在这种情况下,应该!) 【参考方案1】:

这适用于上面给出的测试用例

Qt:     4.7.2
PyQt:   4.8.3 or PySide 1.0.1
Python: 2.7.1

正如上面在 cmets 中所述,http://developer.qt.nokia.com/forums/viewthread/4760 解释了该错误,并报告为从https://bugs.webkit.org/show_bug.cgi?id=57414 修复,并且可能包含在 Qt 4.7.2 中。

【讨论】:

谢谢!看来这是最后的结果了。我必须自己构建它。

以上是关于PyQT 打开一个带有 JS 警报弹出的网页会得到 SegFault。如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

如何用JS点击超链接弹出对话框

JS弹出对话框怎么写?

怎么将java web项目出错中弹出的来自网页信息框关掉!

为啥电脑每次打开一个新的网页都会弹出一个提示框?要怎样关掉?

如何弹出下载对话框

点任何一个链接网页,都不会弹出新窗口,怎么办?