PyQT打开带JS警告弹窗的网页会导致SegFault,如何解决?

23 投票
1 回答
1041 浏览
提问于 2025-04-17 07:30

我正在学习PyQT编程,最近做一个简单的测试时,出现了“段错误”,这是我的代码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的弹出警告框,我点击了“确定”,然后pop.py就退出了,并出现了“段错误”。

我也试过PySide,结果一样。如果HTML中没有JavaScript的警告框,就没问题。这是QT的一个bug,还是我漏掉了什么?

我在Debian上使用的是python 2.6.6,python-qt4 4.8.3,libqtwebkit4 2.1.0。

我还在Fedora 15上试过,使用的是PyQt4-4.8.3和python 2.7.1,问题依旧。

任何建议或搜索线索都很有帮助。谢谢!

1 个回答

3

这个方法在上面给出的测试案例中是有效的。

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

正如上面的评论所提到的,http://developer.qt.nokia.com/forums/viewthread/4760 解释了这个错误,并且在https://bugs.webkit.org/show_bug.cgi?id=57414上报告说这个问题已经修复,可能已经包含在Qt 4.7.2版本中。

撰写回答