2012-12-19 4 views
1

나는이 QuestionX.Jacobs의 답변을 따라 여러 매개 변수로 여러 창이 열리는 앱을 만들려고했지만 앱이 창을 열고 있지만 웹 페이지를로드하지 않는 것처럼 보이지는 않습니다. .매개 변수가 다른 여러 웹 페이지를 엽니 다. PyQt4

그 코드 : 체크 아웃이 작업 버전 일 몇 가지가있다
#! /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_() 

답변

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_() 
+0

신난다! 대단히 감사합니다! 너는 최고야. – Vor