1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
# -*- coding: utf-8 -*-
from PyQt4.QtCore import QUrl
from PyQt4.QtGui import (QApplication, QWidget, QGridLayout, QVBoxLayout,
QHBoxLayout, QLabel, QPushButton, QSpacerItem,
QSizePolicy)
from PyQt4.QtWebKit import QWebView, QWebPage, QWebSettings
ROOT = "http://programme.tv.yahoo.net/php/timeLine/index.php"
class WebApp(QWidget):
def __init__(self, main, parent=None):
super(WebApp, self).__init__(parent)
self.resize(738, 487)
self.grid = QGridLayout(self)
self.vlayout = QVBoxLayout()
self.webview = Viewer(self)
self.webview.set_url(ROOT)
self.vlayout.addWidget(self.webview)
self.hlayout = QHBoxLayout()
self.pages_lbl = QLabel(self)
self.hlayout.addWidget(self.pages_lbl)
spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.hlayout.addItem(spacer)
self.previous_btn = QPushButton(self)
self.previous_btn.setText(u"Précédente")
self.hlayout.addWidget(self.previous_btn)
self.next_btn = QPushButton(self)
self.next_btn.setText(u"Suivante")
self.hlayout.addWidget(self.next_btn)
self.vlayout.addLayout(self.hlayout)
self.grid.addLayout(self.vlayout, 0, 0, 1, 1)
self.previous_btn.clicked.connect(self.webview.previous_page)
self.next_btn.clicked.connect(self.webview.next_page)
class Viewer(QWebView):
def __init__(self, parent=None):
super(Viewer, self).__init__(parent)
self.ui = parent
self.page_ = QWebPage()
self.setPage(self.page_)
self.settings().setAttribute(QWebSettings.PluginsEnabled, True)
self.is_loaded = False
self.numb_pages = 0
self.current_page = -1
self.loadFinished.connect(self.on_loading_finished)
def set_url(self, url):
self.setUrl(QUrl(url))
def on_loading_finished(self):
if self.current_page == -1:
self.is_loaded = True
# At startup
np = self.page_.mainFrame().evaluateJavaScript('nodeNbPage.value')
# np is QVariant
self.numb_pages = np.toInt()[0]
cp = self.page_.mainFrame().evaluateJavaScript('nodePageCourante.value')
self.current_page = cp.toInt()[0]
self.ui.pages_lbl.setText("Page courante: %s / %s" %(self.current_page,
self.numb_pages))
def previous_page(self):
if not self.is_loaded:
return
p = self.current_page - 1
if p == 0:
p = self.numb_pages
self.change_page(p)
def next_page(self):
if not self.is_loaded:
return
p = self.current_page + 1
if p == self.numb_pages + 1:
p = 1
self.change_page(p)
def change_page(self, index):
self.page_.mainFrame().evaluateJavaScript('page(%s)' % index)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
wa = WebApp(None)
wa.show()
sys.exit(app.exec_()) |
Partager