我也在使用 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.