Форум сайта python.su
Пишу программу которая в качестве GUI будет использовать веб-интерфейс по аналогии с браузером. Для перехода между “окнами” нужен перехват события linkClicked PySide.QtWebKit.QWebView
Скелет:
import sys import PySide.QtCore import PySide.QtGui import PySide.QtWebKit class GUIBrowser(PySide.QtWebKit.QWebView): def __init__(self): super().__init__() def tst(): web.setHtml(tstHtmlB) app = PySide.QtGui.QApplication(sys.argv) web = GUIBrowser() web.setHtml(tstHtml) web.linkClicked = tst() web.show() sys.exit(app.exec_())
self.linkClicked.connect(tst) linkClicked = PySide.QtCore.Signal(str, str, str, str)
#!/usr/bin/env python #coding:utf-8 from PySide.QtGui import QApplication from PySide.QtWebKit import QWebView, QWebPage class View(QWebView): def __init__(self): QWebView.__init__(self) self.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks) self.linkClicked.connect(self.on_link) def on_link(self,url): print('link:',url.path()) if __name__=="__main__": app = QApplication([]) view = View() html = "<html><body><a href=\"about:blank\">Click Me</a></body></html>" view.setHtml(html) view.move(0,0) view.resize(400,300) view.show() app.exec_()
Отредактировано astrobeglec (Дек. 14, 2016 08:40:00)
Офлайн
унаследуйся от WebView и обработчик перепиши
# #!/usr/bin/env python #coding:utf-8 from PyQt4.Qt import QApplication,QWebView class View(QWebView): def __init__(self): QWebView.__init__(self) self.page().setLinkDelegationPolicy(2) self.linkClicked.connect(self.on_link) def on_link(self,url): print 'link:',url.path() if __name__=="__main__": app = QApplication([]) view = View() html = "<html><body><a href=\"about:blank\">Click Me</a></body></html>" view.setHtml(html) view.move(0,0) view.resize(400,300) view.show() app.exec_()
Отредактировано vic57 (Дек. 8, 2016 21:55:30)
Офлайн
vic57Спасибо большое, пинок понял. В Python3 + PySide получается так:
унаследуйся от WebView и обработчик перепиши
#!/usr/bin/env python #coding:utf-8 from PySide.QtGui import QApplication from PySide.QtWebKit import QWebView, QWebPage class View(QWebView): def __init__(self): QWebView.__init__(self) self.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks) self.linkClicked.connect(self.on_link) def on_link(self,url): print('link:',url.path()) if __name__=="__main__": app = QApplication([]) view = View() html = "<html><body><a href=\"about:blank\">Click Me</a></body></html>" view.setHtml(html) view.move(0,0) view.resize(400,300) view.show() app.exec_()
Офлайн