python - QtWebkit 和 hasPendingEvents() 始终为 True

标签 python events webkit qtwebkit


我使用 webkit2png 项目(稍微附加)在 Linux 中截取屏幕截图。在运行最新版本 QtWebkit 和 Python 2.6 的服务器上

在某些网站(例如118114.cn)上出现问题并且应用程序永远挂起。调试显示该代码片段存在问题:

while self.__loading:<br/>    if timeout > 0 and time.time() >= cancelAt: <br/>       raise RuntimeError("Request timed out on %s" % url) <br/>    while QApplication.hasPendingEvents(): <br/>       QCoreApplication.processEvents()

完整版源代码已发布 here (第 270-275 行)

不知何故,Loading-event 挂起,并且 hasPendingEvents 不能为 False。

大多数屏幕截图都是正常创建的,但有时由于某些 URL 导致我的应用程序丢失:(

有人知道如何解决这个问题以及事件挂起的原因吗?

最佳答案

我也在使用 webkit2png + Linux,并且在我的 MacBook Pro 上进行本地测试时遇到了您所描述的问题。问题似乎是 QApplication.hasPendingEvents() 错误地返回 True,并且 while 循环挂起。我通过删除 while 循环解决了这个问题:

while self.__loading:
   if timeout > 0 and time.time() >= cancelAt: 
      raise RuntimeError("Request timed out on %s" % url) 
   QCoreApplication.processEvents()

请注意,您还需要在 __WebkitRendererHelper.render 中的几个位置进行此更改。进行这些更改后,一切都对我有用 - 祝你好运。

编辑:我相信我最初通过升级底层 QT 库在 Linux 方面解决了这个问题。 Ubuntu 10.04 LTS (4.6.2) 的默认版本有一个错误,该错误已在后续版本中修复。这是我的安装信息:

Package: libqtcore4
State: installed
Automatically installed: yes
Version: 4:4.7.0-0ubuntu2~lucid1~ppa1
Priority: optional
Section: libs
Maintainer: Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>
Uncompressed Size: 7,471k
Depends: libc6 (>= 2.9), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libstdc++6 (>= 4.1.1), zlib1g (>= 1:1.1.4)
Breaks: libqt4-core (< 4.4.0~beta1-1), libqt4-gui (< 4.4.0~beta1-1)
Replaces: libqt4-core (< 4.4.0~beta1-1), libqt4-gui (< 4.4.0~beta1-1)
Description: Qt 4 core module
 Qt is a cross-platform C++ application framework. Qt's primary feature is its rich set of widgets that provide standard GUI
 functionality. 

 The QtCore module contains core non-GUI functionality.

关于python - QtWebkit 和 hasPendingEvents() 始终为 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350016/

相关文章:

css - 需要帮助修复 chrome/safari 中的 css 错误

html - Webkit 硬件加速渗入页面上的其他元素?

python - 如何使用 python 绘制具有两个斜率的线

python - 尝试追加时出现内存错误

python - 与 pyQt 一起使用时箱线图不显示

python - 单元测试调用 vim 子进程的 python 函数

c# - 如何检测滚动条何时出现? C#

.net - .NET 的简单事件总线

javascript - 将 Window 对象上的鼠标滚轮事件更改为 {passive : false} - Javascript

visual-studio-2010 - -webkit-box-sizing 属性在 VS2010 中不显示