首次信号发射后自动断开连接

4
我正在加载一个来自文件的网页,然后替换其中的一些HTML代码:
    self.template_web_page = QtWebKit.QWebPage()
    self.template_web_page.mainFrame().load(QtCore.QUrl('template.html'))
    def load(ok):
        main_window.web_view.loadFinished.disconnect(load)
        self.table_element = self.template_web_page.mainFrame().findFirstElement("#table")
        self.table_element.setInnerXml(table_html)
    main_window.web_view.loadFinished.connect(load)

有没有一种方法可以仅仅连接一次信号?

你的解决方案看起来很理想。有什么问题吗? - Luke
如果QTimer上有一个singleShot方法,我认为信号也可能有一个类似的便利方法。 - warvariuc
1个回答

1
如前所述,似乎没有比这更好(更简洁)的方法。 http://comments.gmane.org/gmane.comp.lib.qt.general/6883建议这样的解决方案是可以的,尽管我自己使用这种解决方案时遇到了问题。我发现,如果我在插槽的开头断开插槽连接(就像在问题中的代码中所做的那样),然后尝试执行一些GUI交互(设置状态栏文本是一个问题,但不是在列表视图中突出显示行),我会因为空指针引用而得到异常。这是使用PyQt 4.6.2进行Python 2.6 for Windows时发生的。当我将disconnect()调用移到插槽的末尾时,问题消失了。
提前道歉,如果这与问题无关,只是我犯的一个愚蠢的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接