代码之家  ›  专栏  ›  技术社区  ›  chx

我扩展了QApplication,并在exec不起作用后调用了一个方法

  •  0
  • chx  · 技术社区  · 14 年前

    以下代码有效(而且非常简单):

    class Scrape(QApplication):
      def __init__(self):
        super(Scrape, self).__init__(None)
        self.webView = QWebView()
        self.webView.loadFinished.connect(self.loadFinished)
      def load(self, url):
        self.webView.load(QUrl(url))
      def loadFinished(self):
        documentElement = self.webView.page().currentFrame().documentElement()
    
    myScrape = Scrape()
    myScrape.load('http://google.com/ncr')
    myScrape.exec_()
    

    但是我真的不明白为什么exec()必须是最后一个调用,如果必须的话,那么load()到底做了什么。。。?如果我需要加载,比如说,两个网页,这些怎么办?

    1 回复  |  直到 14 年前
        1
  •  2
  •   sje397    14 年前

    这个 exec_

    load方法实现了您所期望的:在视图中设置Url。它不需要处理事件就可以工作。但如果你还没有完成 执行_

    这个 执行_ 方法,如术语“事件循环”所示,循环直到应用程序退出。在此之后调用的函数在事件循环退出之前不会被调用。

    连接信号和插槽的示例(从 here

    # Define a new signal called 'trigger' that has no arguments.
    trigger = QtCore.pyqtSignal()
    
    def connect_and_emit_trigger(self):
        # Connect the trigger signal to a slot.
        self.trigger.connect(self.handle_trigger)
    
        # Emit the signal.
        self.trigger.emit()
    
    def handle_trigger(self):
        # Show that the slot has been called.
    
        print "trigger signal received"