コード例 #1
0
ファイル: browser.py プロジェクト: centaurialpha/tour-pyqt
class Browser(QWidget):

    def __init__(self):
        super(Browser, self).__init__()
        self.setWindowTitle("Navegador PyConAr 2016")
        vbox = QVBoxLayout(self)  # Contenedor principal
        hbox = QHBoxLayout()  # Contenedor horizontal
        # Widgets
        btn_atras = QPushButton(QIcon.fromTheme("back"), '')
        btn_adelante = QPushButton(QIcon.fromTheme("forward"), '')
        btn_ok = QPushButton(QIcon.fromTheme("find"), '')
        btn_parar = QPushButton(QIcon.fromTheme("cancel"), '')
        btn_reload = QPushButton(QIcon.fromTheme("reload"), '')
        self.url = QLineEdit()
        self.url.setPlaceholderText("Ingresa una página web o busca en Google")
        # Agrego los widgets
        hbox.addWidget(btn_atras)
        hbox.addWidget(btn_adelante)
        hbox.addWidget(btn_parar)
        hbox.addWidget(btn_reload)
        hbox.addWidget(self.url)
        hbox.addWidget(btn_ok)
        # Agrego el contenedor horizontal al vertical
        vbox.addLayout(hbox)
        # Componente web
        self.web = QWebView()
        vbox.addWidget(self.web)
        # Creo una barra de estado
        self.estado = QStatusBar()
        self.estado.hide()
        # Creo una barra de progreso y la agrego a la barra de estado
        self.prog = QProgressBar()
        self.estado.addWidget(self.prog, 1)
        self.estado.addWidget(QLabel("Cargando..."))
        vbox.addWidget(self.estado)

        # Conexiones
        btn_atras.clicked.connect(self.web.back)
        btn_adelante.clicked.connect(self.web.forward)
        btn_parar.clicked.connect(self.web.stop)
        btn_reload.clicked.connect(self.web.reload)
        btn_ok.clicked.connect(self._cargar_pagina)
        self.web.loadProgress.connect(self.prog.setValue)
        self.web.loadFinished.connect(self._carga_terminada)
        self.url.returnPressed.connect(self._cargar_pagina)

    def _carga_terminada(self):
        self.estado.hide()
        self.url.setText(self.web.url().toString())

    def _cargar_pagina(self):
        if not self.estado.isVisible():
            self.estado.show()
        text = self.url.text()
        if text.find('.') != -1 and not text.startswith('http://'):
            url = 'http://' + text
        else:
            url = 'http://google.com/search?q=' + text.replace(' ', '+')
        self.web.load(QUrl(url))