我已经按照X.Jacobs在这个问题上的回答,并试图创建一个应用程序,该应用程序将打开具有不同参数的多个窗口,但它不起作用,看起来,就像应用程序正在打开窗口,但不加载网页。
#! /usr/bin/env python2.7
from PyQt4.QtCore import *
from PyQt4.QtGui import*
from PyQt4.QtWebKit import *
import sys, signal
url = 'http://http://forums.fedoraforum.org/showthread.php?t={0}'
class Opener(QWebView):
def __init__(self, param=None):
QWebView.__init__(self)
self.param = param
self.loadFinished.connect(self.print_title)
def print_title(self):
print self.title()
class Foo(QObject):
def __init__(self):
QObject.__init__(self)
self.count = 0
self.params = range(4)
self.mapper = QSignalMapper(self)
self.mapper.mapped.connect(self.mapper_mapped)
for i in range(2):
opener = Opener()
opener.loadFinished.connect(self.mapper.map)
self.mapper.setMapping(opener, i)
opener.loadFinished.emit(True)
QTimer.singleShot(1, lambda:opener.loadFinished.emit(True))
def mapper_mapped(self, gNumber):
self.count += 1
if self.count < len(self.params):
gParam = self.params[self.count]
opener = self.mapper.mapping(gNumber)
opener.load(QUrl(url.format(gParam)))
opener.show()
QTimer.singleShot(1, lambda:opener.loadFinished.emit(True))
if __name__ == "__main__":
app = QApplication(sys.argv)
main = Foo()
if signal.signal(signal.SIGINT, signal.SIG_DFL):
sys.exit(app.exec_())
app_exec_()