我已经在X.Jacobs上按Question进行了回答,并试图创建一个应用程序,它将打开多个具有不同参数的窗口,但它不起作用,看起来像app一样打开窗口,但没有加载网页。
#! /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_()
答案 0 :(得分:1)
在该代码中发生了一些事情:)检查这个工作版本并看看如何使其适应你的:
#!/usr/bin/env python
from PyQt4.QtCore import *
from PyQt4.QtGui import*
from PyQt4.QtWebKit import *
class Foo(QWidget):
def __init__(self, parent=None):
super(Foo, self).__init__(parent)
self.count = 0
self.params = range(4)
self.url = 'http://forums.fedoraforum.org/showthread.php?t={0}'
self.gridLayout = QGridLayout(self)
self.tabWidget = QTabWidget(self)
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
self.mapper = QSignalMapper(self)
self.mapper.mapped.connect(self.on_mapper_mapped)
for i in range(2):
grabber = QWebView()
grabber.loadFinished.connect(self.mapper.map)
self.mapper.setMapping(grabber, i)
self.tabWidget.addTab(grabber, "opener {0}".format(str(i)))
grabber.loadFinished.emit(True)
@pyqtSlot(int)
def on_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(self.url.format(gParam)))
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main = Foo()
main.show()
app.exec_()