python - PyQt QtWebKit loadFinished 未调用

标签 python pyqt signals-slots qtwebkit

我有这个脚本,我想在它准备好后用它做更多的事情:

from PyQt4 import QtCore, QtGui, QtWebKit

class WebViewCreator:
    def __init__(self):

        self.view = QtWebKit.QWebView()
        self.view.setPage(QtWebKit.QWebPage())

        self.view.connect(self.view, QtCore.SIGNAL('loadFinished(bool)'), self.load_finished)

        path = self.app.resources_uri() + "/index.html"
        self.view.load(QtCore.QUrl(path))

    def load_finished(self, ok):
        print ok

def onDone(ok):
    print ok

我遇到的问题是,如果我将一个函数连接到 loadFinished(bool) 信号,那么该函数就会被执行,但是如果我连接一个像 self.load_finished 这样的对象的方法,那么这个方法就不会被调用,我可以'不明白为什么:-/

同样的情况也会发生:

self.view.loadFinished.connect(onDone)

对比:

self.view.loadFinished.connect(self.load_finished)

最佳答案

您发布的代码没有任何明显的错误。

也就是说,当我运行这个稍微简化的版本时,它成功加载页面并(最终)打印 True:

from PyQt4 import QtCore, QtGui, QtWebKit

class WebViewCreator(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.view = QtWebKit.QWebView(self)
        self.view.loadFinished.connect(self.load_finished)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.view)
        self.view.load(QtCore.QUrl('http://stackoverflow.com/'))

    def load_finished(self, ok):
        print ok

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = WebViewCreator()
    window.show()
    sys.exit(app.exec_())

这是在 Linux 上使用 Python 2.7.3、Qt 4.8.3 和 PyQt 4.9.5。

关于python - PyQt QtWebKit loadFinished 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408179/

相关文章:

python - ffmpeg-python 提取特定视频流,更改其 FPS 并将其嵌入回视频中

python - Scrapy xpath 删除 < 字符后的文本

python - 如何在从另一个小部件的拖放事件期间突出显示表格单元格

python - PyQt5:使用自定义信号时 int 对象的错误转换

c++ - 在派生的 QObject 构造函数中连接 Qt 信号和槽

python - 使用 List 参数调用经过棉花糖验证的 GET 端点

python3 strftime 输出因平台而异

python - 如何将选定的项目从 QListWidget、QTableWidget 保存到 Qsettings

python - 基于 PyQt 的 GUI 中的计时器

python - 监听 pyqtBoundSignal 上的新信号连接