Играем с PyQt4 и WebKit Первый делом софт среда разработки IDE Aptana Studio. Ставим затем Python на конец качай от сюда PyQt4. Как настроить сам Python можно почитать тут приступаем создаем новый проект Qweb. добавляем нужные нам либы. from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * Пора написать первую программу код еще прост пример код 1. Сперва создаем приложение для запуска. потом создаем наше веб приложнеие. устанавливаем название у окна "Hello Webkit" потом грузим в него веб контент, показываем его. Code: ''' Created on Jan 31, 2013 @author: ^NSA^ ''' import sys from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * #part one welcome app = QApplication(sys.argv); web = QWebView() web.setWindowTitle("Hello Webkit") web.load(QUrl("http://antichat.ru")) web.show() sys.exit(app.exec_()) Переходим на пример кода 2. Тут видем новые строки кода. Создали фрайм от веб-приложения через него получаем доступ обьектам веб-приложения. frame =web.page().mainFrame() Обрабочик событий Qt это сигналы и слоты. web.loadFinished.connect(loaded) когда загрузка закончена вызывается слот а слот простой метод или функция. В нашем случае def loaded(): это и выполняем Javascript код frame.evaluateJavaScript("alert('Welcome Home')") Code: ''' Created on Jan 31, 2013 @author: ^NSA^ ''' import sys from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * #slot def loaded(): print("loaded") frame.evaluateJavaScript("alert('Welcome Home')") #part two signal and slot and frame app = QApplication(sys.argv); web = QWebView() frame =web.page().mainFrame() web.setWindowTitle("Hello Webkit") #new web.loadFinished.connect(loaded) web.load(QUrl("http://antichat.ru")) web.show() sys.exit(app.exec_()) Далее у нас пример кода номер 3. тут Создаем свой Виджет наследую от QWidget, про виджеты говорить не буду сами прочитаете. Когда создается виджет вызывается self.setupInspector() для создание Инспектора удобная вещь для отладки. Наш слот сменил название changeHead. Если нашем окне нажать F2 то Инспектор закроется еще раз нажать снова будет виден. Code: ''' Created on Jan 31, 2013 @author: hide ''' ''' Created on Jan 31, 2013 @author: ^NSA^ ''' import sys from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * class Window(QWidget): def __init__(self): super(Window, self).__init__() self.view = QWebView(self) #create Inspector self.setupInspector() self.frame =self.view.page().mainFrame() self.splitter = QSplitter(self) self.splitter.setOrientation(Qt.Vertical) self.view.loadFinished.connect(self.changeHead) # layout see more doc qt layout = QVBoxLayout(self) layout.setMargin(0) layout.addWidget(self.splitter) self.splitter.addWidget(self.view) self.splitter.addWidget(self.webInspector) def changeHead(self): self.frame.evaluateJavaScript("console.log('Hello Home')") #for debug need def setupInspector(self): page = self.view.page() page.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True) self.webInspector = QWebInspector(self) self.webInspector.setPage(page) shortcut = QShortcut(self) #can change key Key_F12 shortcut.setKey(Qt.Key_F2) shortcut.activated.connect(self.toggleInspector) # can see self.webInspector.setVisible(True) #hide or show def toggleInspector(self): self.webInspector.setVisible(not self.webInspector.isVisible()) #part 3 go to Class and method app = QApplication(sys.argv); web = Window() web.view.load(QUrl("http://antichat.ru")) web.show() sys.exit(app.exec_()) Последний пример кода 4 показывает как можно выбирать Document Object Model. Выбираем первый элемент self.documentElement = self.frame.findFirstElement("head") потом добавляем в него self.documentElement.appendInside("<script src='http://code.jquery.com/jquery-1.9.0.min.js'>"). Также можем удалять элементы self.el.removeAllChildren(), добавлять классы из CSS self.el.addClass("qgreen") и многое другое делать. Code: ''' Created on Jan 31, 2013 @author: hide ''' ''' Created on Jan 31, 2013 @author: ^NSA^ ''' import sys from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * class Window(QWidget): def __init__(self): super(Window, self).__init__() self.view = QWebView(self) #create Inspector self.setupInspector() self.frame =self.view.page().mainFrame() self.splitter = QSplitter(self) self.splitter.setOrientation(Qt.Vertical) self.view.loadFinished.connect(self.changeHead) # layout see more doc qt layout = QVBoxLayout(self) layout.setMargin(0) layout.addWidget(self.splitter) self.splitter.addWidget(self.view) self.splitter.addWidget(self.webInspector) def changeHead(self): js = '''<script> function qw(){ console.log("test"); alert("Test"); $(".qgreen).click(function() { }); } ''' self.frame.evaluateJavaScript("console.log('Hello Home')") self.documentElement = self.frame.findFirstElement("head") self.el= self.frame.findFirstElement("div") self.el.addClass("qgreen") self.el.removeAllChildren() self.documentElement.appendInside("<script src='http://code.jquery.com/jquery-1.9.0.min.js'>") self.documentElement.appendInside(js) self.frame.evaluateJavaScript("qw();"); #for debug need def setupInspector(self): page = self.view.page() page.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True) self.webInspector = QWebInspector(self) self.webInspector.setPage(page) shortcut = QShortcut(self) #can change key Key_F12 shortcut.setKey(Qt.Key_F2) shortcut.activated.connect(self.toggleInspector) # can see self.webInspector.setVisible(True) #hide or show def toggleInspector(self): self.webInspector.setVisible(not self.webInspector.isVisible()) #part 3 go to Class and method app = QApplication(sys.argv); web = Window() web.view.load(QUrl("http://antichat.ru")) web.show() sys.exit(app.exec_()) Автор ^NSA^ 2013г продолжение следует.
мне по душе wingide для кодинга на python. по PyQt можно вот такую книжечку полистать для начала. http://books.google.lu/books?id=igcZ-fnxTwEC&pg=PA361&hl=de&source=gbs_toc_r&cad=3#v=onepage&q&f=false PS скоро будем обучать как нажать кнопку мыши: "Пальчик помыть, аккуратно коснуться и..."
Книжка как по мне не очень читал, но тема сисек там не раскрыта. Для WebKit под питон юзаю Spynner удобная обертка.
тема сисек раскрыта в официальной документации, как всегда. Можно еще просто по Qt купить\скачать- там раскроются новые подробности гуй-строения на qt =) Все хотят готовенького, но если решили сами что то делать, нужно "пуд соли съесть", чтобы результат был.