Foro de elhacker.net

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
  1. import sys, re
  2. from PyQt4 import QtGui, QtCore, QtWebKit
  3.  
  4. class PyBrowser(QtGui.QWidget):
  5.  
  6.    def __init__(self):
  7.        QtGui.QWidget.__init__(self)
  8.        self.setWindowTitle('Simple Web Browser')
  9.  
  10.        v_box = QtGui.QVBoxLayout(self)
  11.        #Bar
  12.        h_bar = QtGui.QHBoxLayout()
  13.        self.previous = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_ArrowLeft), '')
  14.        self.next = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_ArrowRight), '')
  15.        self.refresh = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_BrowserReload), '')
  16.        self.stop = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_BrowserStop), '')
  17.        self.url = QtGui.QLineEdit('')
  18.        self.url.setFixedWidth(550)
  19.        self.okUrl = QtGui.QPushButton(self.style().standardIcon(QtGui.QStyle.SP_DialogOkButton), '')
  20.        self.okUrl.setFlat(True)
  21.        h_bar.addWidget(self.previous)
  22.        h_bar.addWidget(self.next)
  23.        h_bar.addWidget(self.refresh)
  24.        h_bar.addWidget(self.stop)
  25.        h_bar.addWidget(self.url)
  26.        h_bar.addWidget(self.okUrl)
  27.        #Page Frame
  28.        self.web = QtWebKit.QWebView()
  29.        self.web.load(QtCore.QUrl('http://www.google.com'))
  30.        #Status Bar
  31.        self.status = QtGui.QStatusBar()
  32.        self.prog = QtGui.QProgressBar()
  33.        self.load = QtGui.QLabel('Loading...')
  34.        self.status.addWidget(self.load)
  35.        self.status.addWidget(self.prog)
  36.  
  37.        #Add widgets and layout to window
  38.        v_box.addLayout(h_bar)
  39.        v_box.addWidget(self.web)
  40.        v_box.addWidget(self.status)
  41.        #Shortcut
  42.        self.short = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_J), self.url)
  43.  
  44.        self.connect(self.previous, QtCore.SIGNAL("clicked()"), self.web.back)
  45.        self.connect(self.next, QtCore.SIGNAL("clicked()"), self.web.forward)
  46.        self.connect(self.refresh, QtCore.SIGNAL("clicked()"), self.web.reload)
  47.        self.connect(self.stop, QtCore.SIGNAL("clicked()"), self.web.stop)
  48.        self.connect(self.url, QtCore.SIGNAL("returnPressed()"), self.doSearch)
  49.        self.connect(self.okUrl, QtCore.SIGNAL("clicked()"), self.doSearch)
  50.        self.connect(self.web, QtCore.SIGNAL("loadProgress(int)"), self.progress)
  51.        self.connect(self.web, QtCore.SIGNAL("loadFinished(bool)"), self.loadComplete)
  52.        self.connect(self.web, QtCore.SIGNAL("loadStarted()"), self.status.show)
  53.        self.connect(self.short, QtCore.SIGNAL("activated()"), self.url.setFocus)
  54.  
  55.    def progress(self, porc):
  56.        self.prog.setValue(porc)
  57.  
  58.    def openUrl(self, text):
  59.        self.web.setFocus()
  60.        self.web.load(QtCore.QUrl(text))
  61.  
  62.    def doSearch(self):
  63.        link = self.url.text()
  64.        pat = re.compile('(.+)\\.(.+)')
  65.        patHttp = re.compile('^http://')
  66.        if pat.match(link) and not patHttp.match(link):
  67.            link = 'http://' + link
  68.        elif not pat.match(link):
  69.            link = 'http://www.google.com/search?q=' + link.replace(' ', '+')
  70.        self.openUrl(link)
  71.  
  72.    def loadComplete(self):
  73.        self.url.setText(self.web.url().toString())
  74.        self.status.hide()
  75.  
  76.  
  77. app = QtGui.QApplication(sys.argv)
  78. pybrowser = PyBrowser()
  79. pybrowser.show()
  80.  
  81. sys.exit(app.exec_())
  82.  


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
me 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)