Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: darkweb64 en 9 Mayo 2015, 00:47 AM

Título: [Python + QT4] Problema con barra de navegador hecho con python y QT4
Publicado por: darkweb64 en 9 Mayo 2015, 00:47 AM
Me pueden ayudar con el código de este navegador, me gustaría que la página fuera fija y no pueda cambiarse por otra o que en su defecto se oculte la página del la barra de navegación.


Código (python) [Seleccionar]
import sys, re
from PyQt4 import QtGui, QtCore, QtWebKit

class PyBrowser(QtGui.QWidget):

    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle('Simple Web Browser')
       
        v_box = QtGui.QVBoxLayout(self)
        #Bar
        h_bar = QtGui.QHBoxLayout()
        self.previous = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_ArrowLeft), '')
        self.next = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_ArrowRight), '')
        self.refresh = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_BrowserReload), '')
        self.stop = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_BrowserStop), '')
        self.url = QtGui.QLineEdit('')
        self.url.setFixedWidth(550)
        self.okUrl = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_DialogOkButton), '')
        self.okUrl.setFlat(True)
        h_bar.addWidget(self.previous)
        h_bar.addWidget(self.next)
        h_bar.addWidget(self.refresh)
        h_bar.addWidget(self.stop)
        h_bar.addWidget(self.url)
        h_bar.addWidget(self.okUrl)
        #Page Frame
        self.web = QtWebKit.QWebView()
        self.web.load(QtCore.QUrl('http://www.google.com'))
        #Status Bar
        self.status = QtGui.QStatusBar()
        self.prog = QtGui.QProgressBar()
        self.load = QtGui.QLabel('Loading...')
        self.status.addWidget(self.load)
        self.status.addWidget(self.prog)

        #Add widgets and layout to window
        v_box.addLayout(h_bar)
        v_box.addWidget(self.web)
        v_box.addWidget(self.status)
        #Shortcut
        self.short = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_J), self.url)

        self.connect(self.previous, QtCore.SIGNAL("clicked()"), self.web.back)
        self.connect(self.next, QtCore.SIGNAL("clicked()"), self.web.forward)
        self.connect(self.refresh, QtCore.SIGNAL("clicked()"), self.web.reload)
        self.connect(self.stop, QtCore.SIGNAL("clicked()"), self.web.stop)
        self.connect(self.url, QtCore.SIGNAL("returnPressed()"), self.doSearch)
        self.connect(self.okUrl, QtCore.SIGNAL("clicked()"), self.doSearch)
        self.connect(self.web, QtCore.SIGNAL("loadProgress(int)"), self.progress)
        self.connect(self.web, QtCore.SIGNAL("loadFinished(bool)"), self.loadComplete)
        self.connect(self.web, QtCore.SIGNAL("loadStarted()"), self.status.show)
        self.connect(self.short, QtCore.SIGNAL("activated()"), self.url.setFocus)

    def progress(self, porc):
        self.prog.setValue(porc)

    def openUrl(self, text):
        self.web.setFocus()
        self.web.load(QtCore.QUrl(text))

    def doSearch(self):
        link = self.url.text()
        pat = re.compile('(.+)\\.(.+)')
        patHttp = re.compile('^http://')
        if pat.match(link) and not patHttp.match(link):
            link = 'http://' + link
        elif not pat.match(link):
            link = 'http://www.google.com/search?q=' + link.replace(' ', '+')
        self.openUrl(link)

    def loadComplete(self):
        self.url.setText(self.web.url().toString())
        self.status.hide()


app = QtGui.QApplication(sys.argv)
pybrowser = PyBrowser()
pybrowser.show()

sys.exit(app.exec_())
Título: Re: [Python + QT4] Problema con barra de navegador hecho con python y QT4
Publicado por: Eleкtro en 9 Mayo 2015, 01:11 AM
Cita de: darkweb64 en  9 Mayo 2015, 00:47 AMme gustaría que la página fuera fija y no pueda cambiarse por otra

No manejo PyQT, pero leyendo la documentación de QT encontré la señal/evento urlChanged:
void QWebView::urlChanged(const QUrl & url) [signal] (http://qt.apidoc.info/5.1.1/qtwebkit/qwebview.html#urlChanged)

La idea sería que al emitirse esa señal reestablezcas la url por defecto y así poder mantenerla "fija".

Saludos.
Título: Re: [Python + QT4] Problema con barra de navegador hecho con python y QT4
Publicado por: 0x5d en 15 Mayo 2015, 07:03 AM
Hola, buen día.

No entiendo para que tienes una barra de direcciones si quieres tener una página fija. Mejor solo carga la url que quieres y elimina el QLineEdit de la URL.

Saludos.
Título: Re: [Python + QT4] Problema con barra de navegador hecho con python y QT4
Publicado por: darkweb64 en 18 Mayo 2015, 17:23 PM
si hago eso meda el siguiente error:

(http://s13.postimg.org/pob8qgq3b/error.png)