I extend QApplication and calling a method after exec_ does not work
以下代码有效(非常简单):
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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()真正做的是什么…?如果我需要加载两个网页,比如说,其中任何一个都会工作吗?
加载方法按照您的期望执行:在视图中设置URL。这不需要处理事件,它就可以工作。但是如果你没有完成
如果你想在你的程序中"做一些事情",通常你会在事件驱动的框架内工作。要加载页面,您可以挂接一个按钮,该按钮将触发一个事件,该事件连接到一个加载不同页面的函数。或者,您可以设置一个计时器,该计时器调用一个从列表中设置URL的函数。
连接信号和插槽的示例(从这里开始):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 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" |