class Event(QWidget): def __init__(self, parent=None): super(Event, self).__init__(parent) self.setWindowTitle('loadFinished Event') url = QUrl('https://www.torproject.org/') self.webView = QWebView() self.webView.setUrl(url) page = self.webView.page() frame = page.mainFrame() frame.loadFinished.connect(self.load_finished) self.mainLayout = QGridLayout() self.mainLayout.addWidget(self.webView) self.setLayout(self.mainLayout) def load_finished(self): print 'load has finished'
def browse(url, name='', icon=''): from PySide.QtGui import QApplication, QIcon from PySide.QtCore import QUrl from PySide.QtWebKit import QWebView for try_ in range(10): try: assert urllib2.urlopen(url).code == 200 except (AssertionError, urllib2.URLError): time.sleep(0.25) else: print "Started Qt Web View after %i ticks." % try_ break else: sys.exit("Error initializing Qt Web View.") qtapp = QApplication(name) web = QWebView() web.load(QUrl(url)) if icon: print "Setting Icon to", icon web.setWindowIcon(QIcon(icon)) else: print "WARNING: No icon found in settings.py" web.setWindowTitle(name) web.show() qtapp.exec_()
class HTMLApplication(object): def show(self): #It is IMPERATIVE that all forward slashes are scrubbed out, otherwise QTWebKit seems to be # easily confused kickOffHTML = join( dirname(__file__).replace('\\', '/'), "templates/index.html").replace('\\', '/') #This is basically a browser instance self.web = QWebView() #Unlikely to matter but prefer to be waiting for callback then try to catch # it in time. self.web.loadFinished.connect(self.onLoad) self.web.load(kickOffHTML) self.web.show() def onLoad(self): #This is the body of a web browser tab self.myPage = self.web.page() self.myPage.settings().setAttribute( QWebSettings.DeveloperExtrasEnabled, True) #This is the actual context/frame a webpage is running in. # Other frames could include iframes or such. self.myFrame = self.myPage.mainFrame() # ATTENTION here's the magic that sets a bridge between Python to HTML self.myFrame.addToJavaScriptWindowObject("eth", self.ethclient) #Tell the HTML side, we are open for business self.myFrame.evaluateJavaScript("ApplicationIsReady()")
class Browser: def __init__(self): self.network_manager = QNetworkAccessManager() self.network_manager.createRequest = self._create_request self.web_page = QWebPage() self.web_page.setNetworkAccessManager(self.network_manager) self.web_view = QWebView() self.web_view.setPage(self.web_page) self.html_data = None self.resultList = [] self.finished = threading.Event() def _create_request(self, operation, request, data): reply = QNetworkAccessManager.createRequest(self.network_manager, operation, request, data) self.resultList.append(request.url().toString()) return reply def myLoadFinish(self): #print "finished" self.finished.set() def getResourceUrlList(self, url): self.web_view.load(url) self.web_view.loadFinished.connect(self.myLoadFinish) self.finished.wait() return self.resultList
def testBug899(self): html = ''' <html><body> <script type="text/javascript"> document.write("<p>"+py_obj.list1+"</p>") document.write("<p>"+py_obj.list2+"</p>") </script> </body></html> ''' class Obj(object): list1 = ['foo', 'bar', 'baz'] list2 = ['fi', 'fo', 'fum'] obj = Obj() wrapper_dict = {} for name in ('list1', 'list2'): getter = lambda arg=None, name=name: getattr(obj, name) wrapper_dict[name] = Property('QVariantList', getter) wrapper = type('PyObj', (QObject,), wrapper_dict) view = QWebView() view.page().mainFrame().addToJavaScriptWindowObject('py_obj', wrapper()) view.setHtml(html)
class HTMLApplication(object): def show(self): #It is IMPERATIVE that all forward slashes are scrubbed out, otherwise QTWebKit seems to be # easily confused kickOffHTML = join(dirname(__file__).replace('\\', '/'), "templates/index.html").replace('\\', '/') #This is basically a browser instance self.web = QWebView() #Unlikely to matter but prefer to be waiting for callback then try to catch # it in time. self.web.loadFinished.connect(self.onLoad) self.web.load(kickOffHTML) self.web.show() def onLoad(self): #This is the body of a web browser tab self.myPage = self.web.page() self.myPage.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True) #This is the actual context/frame a webpage is running in. # Other frames could include iframes or such. self.myFrame = self.myPage.mainFrame() # ATTENTION here's the magic that sets a bridge between Python to HTML self.myFrame.addToJavaScriptWindowObject("eth", self.ethclient) #Tell the HTML side, we are open for business self.myFrame.evaluateJavaScript("ApplicationIsReady()")
def __init__(self, parent=None): super(Text, self).__init__(parent) # Sentence view self.view, self.page = QWebView(), QWebPage() self.view.setPage(self.page) # TODO: update dynamically on parent widget resize events (somehow?) self.view.setMinimumSize(parent.width(), parent.height() / 2) # Info view self.infoView, self.infoPage = QWebView(), QWebPage() self.infoView.setPage(self.infoPage) self.infoView.setMaximumSize(parent.width() / 2, parent.height()) # Active terms and sentence self.terms, self.example = {}, u'' # Default style self.css = 'solarized-light' # Composition self.compose({QHBoxLayout(): [self.infoView, self.view]}) # Initialize events self.page.linkHovered.connect(self.showInfo) self.page.setLinkDelegationPolicy(QWebPage.DelegateExternalLinks) self.page.linkClicked.connect(self.queryServer) # Initialize style self.clearPages()
def webkit_download(url): app = QApplication([]) webview = QWebView() webview.loadFinished.connect(app.quit) webview.load(url) app.exec_() # delay here until download finished return webview.page().mainFrame().toHtml()
def __init__(self, parent=None, userData=None,inspector = True): QWebView.__init__(self, parent) settings = QWebSettings.globalSettings() settings.setFontFamily(QWebSettings.StandardFont, 'Helvetica') settings.setFontSize(QWebSettings.DefaultFontSize, 12) self.webpage = page = PtWebPage(self) self.setPage(page) self.connect(self, SIGNAL('loadFinished(bool)'), self.onLoadFinished) self.settings().setAttribute( QWebSettings.WebAttribute.DeveloperExtrasEnabled, True) #path = os.getcwd() #self.settings().setUserStyleSheetUrl(QUrl.fromLocalFile(path + "/myCustom.css")) font = QFont("Helvetica") font.setPixelSize(12) self.setFont(font) # or globally: # QWebSettings.globalSettings().setAttribute( # QWebSettings.WebAttribute.DeveloperExtrasEnabled, True) if inspector: self.inspector = QWebInspector() self.inspector.setPage(self.page()) self.inspector.hide() self.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks) self.page().linkClicked.connect(self._on_page_link_clicked)
class AssistantWindow(QtGui.QDialog): def __init__(self, *args, **kwargs): super(AssistantWindow, self).__init__(*args, **kwargs) self.smap = QWebView() self.lattitude = QtGui.QLineEdit() self.longitude = QtGui.QLineEdit() self.get_map_button = QtGui.QPushButton('Get map') self.get_map_button.clicked.connect(self.get_map) self.zoom_level = QtGui.QLineEdit() self.zoom_level.setText('18') self.flayout = QtGui.QFormLayout() self.setLayout(self.flayout) self.flayout.addRow('Lattitude:', self.lattitude) self.flayout.addRow('Longitude:', self.longitude) self.flayout.addRow('Zoom level:', self.zoom_level) self.flayout.addRow(self.get_map_button) self.flayout.addRow(self.smap) def get_map(self): lt = int(self.lattitude.text()) ln = int(self.longitude.text()) lt_g = coord_conv(lt) ln_g = coord_conv(ln) url = (ST_MAPS_API + 'center=%s,%s' % (lt_g, ln_g) + '&zoom=%s' % self.zoom_level.text() + '&size=400x400&sensor=false&maptype=hybrid' + '&markers=%s,%s' % (lt_g, ln_g)) self.smap.load(url)
def setUp(self): #Acquire resources TimedQApplication.setUp(self, timeout=1000) self.view = QWebView() QObject.connect(self.view, SIGNAL('loadFinished(bool)'), self.load_finished) self.called = False
class BaseWindow(QtGui.QMainWindow): def __init__(self, parent = None): QtGui.QMainWindow.__init__(self, parent) self.centralWidget = QtGui.QWidget() self.resize(800, 500) self.setWindowTitle('Test') self.tabs = QTabWidget() self.tabs.blockSignals(True) #just for not showing the initial message self.tabs.currentChanged.connect(self.onChange) #changed! self.webview = QWebView() self.webview.load(QUrl("http://gmx.de")) self.webview2 = QWebView() self.webview2.load(QUrl("http://web.de")) centralLayout = QtGui.QVBoxLayout() centralLayout.addWidget(self.tabs, 1) self.tabs.addTab(self.webview, "gmx") self.tabs.addTab(self.webview2, "web") self.centralWidget.setLayout(centralLayout) self.setCentralWidget(self.centralWidget) self.tabs.blockSignals(False) #now listen the currentChanged signal #@pyqtSlot() def onChange(self,i): #changed! QtGui.QMessageBox.information(self, "Tab Index Changed!", "Current Tab Index: %d" % i ) #changed!
class webView(): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(400, 600) MainWindow.setMinimumSize(QtCore.QSize(400, 600)) MainWindow.setMaximumSize(QtCore.QSize(400, 600)) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget) self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.webView = QWebView(self.centralwidget) self.webView.setUrl(QtCore.QUrl("about:blank")) self.webView.setObjectName("webView") self.gridLayout.addWidget(self.webView, 0, 0, 1, 1) self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
def __init__(self): QWidget.__init__(self) self.title = "报告" self.__path = None self.__service = ReportDetService() # report view self.__wid_display = QWebView() # buttons _wid_buttons = ViewButtons( [dict(id="refresh", name=u'更新'), dict(id="export", name=u'导出')]) _wid_buttons.align_back() # main layout _layout = QVBoxLayout() _layout.addWidget(self.__wid_display) _layout.addWidget(_wid_buttons) self.setLayout(_layout) _layout.setContentsMargins(0, 0, 0, 0)
def __init__(self, parent=None): super(Text, self).__init__(parent) # Sentence view self.view, self.page = QWebView(), QWebPage() self.view.setPage(self.page) # TODO: update dynamically on parent widget resize events (somehow?) self.view.setMinimumSize(parent.width(), parent.height() / 2) # Info view self.infoView, self.infoPage = QWebView(), QWebPage() self.infoView.setPage(self.infoPage) self.infoView.setMaximumSize(parent.width() / 2, parent.height()) # Active terms and sentence self.terms, self.example = {}, u'' # Default style self.css = 'solarized-light' # Composition self.compose({ QHBoxLayout(): [self.infoView, self.view] }) # Initialize events self.page.linkHovered.connect(self.showInfo) self.page.setLinkDelegationPolicy(QWebPage.DelegateExternalLinks) self.page.linkClicked.connect(self.queryServer) # Initialize style self.clearPages()
class HtmlFavoritePage(): def __init__(self, page, layout, parent): self.page = page self.parent = parent container = QVBoxLayout() # actions section actionsContainer = QHBoxLayout() self.saveButton = QPushButton('Save') self.saveButton.clicked.connect(lambda: save_clicked(self)) actionsContainer.addWidget(QLabel('Link: ')) self.linkText = QLineEdit(page.url) label = QLabel('<a href="' + page.url + '">Open Externally</a>') label.setOpenExternalLinks(True) actionsContainer.addWidget(self.linkText) actionsContainer.addWidget(self.saveButton) actionsContainer.addWidget(label) container.addLayout(actionsContainer) # content self.view = QWebView() self.view.setUrl(page.url) container.addWidget(self.view) layout.addLayout(container)
def __init__(self, display=True): """ Initialize the display with the app. """ self.app = QApplication([]) QWebView.__init__(self) if display: self.show() # show the browser
def webView(self): if not self._webView: dprint("create web view") from PySide.QtWebKit import QWebView self._webView = QWebView(self.parent) update_web_settings(self._webView.settings()) self._webView.resize(0, 0) # zero size return self._webView
def __init__(self, fn): QWebView.__init__(self) if fn: self.load_file(fn) self.setTextSizeMultiplier(Previwer.DEFAULE_TEXT_MULTIPLIER) self.__set_shortcut()
def _show_timeline(self, start_time_attr, display_abnormal_source=True): conclusions = set() for _, row in self.entries.iterrows(): for c in row.conclusions: conclusions.add(c) conclusions = list(conclusions) conclusions.append('无可用结论') groups, c_id = [], {} for i, c in enumerate(conclusions): groups.append({'id': i, 'content': c}) c_id[c] = i def _gen_item(item, group_id=len(conclusions) - 1): content = '#%s' % item.id if display_abnormal_source: if item.abnormal_src: content += '<br />%s' % ', '.join(item.abnormal_src) _ = {'start': item[start_time_attr].timestamp() * 1000, 'content': content, 'group': group_id} if item.abnormal: _['className'] = 'red' return _ items = [] for i, (_t, item) in enumerate(self.entries.iterrows()): if item.conclusions: for c in item.conclusions: _ = _gen_item(item, c_id[c]) items.append(_) else: _ = _gen_item(item) items.append(_) html = self.timeline_template.render( groups=groups, items=items, start=self.summary_widget.start_time.timestamp() * 1000, end=self.summary_widget.end_time.timestamp() * 1000 ) if self.USE_QT_WEBKIT: view = QWebView(self) view.setHtml(html, self.timeline_base_url) self.figures_widget.addTab(view, '时间线') else: info_box(self, '将会打开外部浏览器查看时间线') path = os.path.join(self.template_path, 'r.html') print(html, file=open(path, 'w', encoding='utf-8')) webbrowser.open(QUrl.fromLocalFile(path).toString())
def displayHtml(parent, title, html): win = QtGui.QDialog(parent) win.setWindowTitle(title) layout = QtGui.QVBoxLayout() win.setLayout(layout) view = QWebView() view.setHtml(html) layout.addWidget(view) win.show()
def __init__(self, media, parent): super(WebMediaView, self).__init__(media, parent) self._widget = QWebView(parent) self._widget.setGeometry(media['_geometry']) self.set_default_widget_prop() self._widget.setDisabled(True) self._widget.page().mainFrame().setScrollBarPolicy( Qt.Vertical, Qt.ScrollBarAlwaysOff) self._widget.page().mainFrame().setScrollBarPolicy( Qt.Horizontal, Qt.ScrollBarAlwaysOff)
def createInstance(self): global functionID self._view = QWebView() self._jsfuncs = JSFuncs() functionID = -1 self._view.page().mainFrame().addToJavaScriptWindowObject( "jsfuncs", self._jsfuncs) self._view.loadFinished[bool].connect(self.onLoadFinished) self._view.load(PAGE_DATA % FUNCTIONS_LIST[self._functionID]) self._view.show()
def __init__(self, app): self.network_manager = QNetworkAccessManager() self.network_manager.createRequest = self._create_request self.web_page = QWebPage() self.web_page.setNetworkAccessManager(self.network_manager) self.web_view = QWebView() self.web_view.setPage(self.web_page) self.html_data = None self.app = app self.finished = threading.Event()
def __init__(self): self.network_manager = QNetworkAccessManager() self.network_manager.createRequest = self._create_request self.network_manager.finished.connect(self._request_finished) self.web_page = QWebPage() self.web_page.setNetworkAccessManager(self.network_manager) self.web_view = QWebView() self.web_view.setPage(self.web_page)
def __init__(self, app): QWebView.__init__(self) # By storing a reference to the application which started this # instance, we will be able to close the application once we get what # we want self.parent_app = app # connect the loadFinished signal to a method defined by us. # loadFinished is the signal which is triggered when a page is loaded self.loadFinished.connect(self._load_finished)
def show(self): self.battery = Battery() self.wifi = Wifi() self.url = QUrl("qt.html") self.web = QWebView() self.web.loadFinished.connect(self.onLoad) self.web.load(self.url) self.web.show()
def test_qt(): a = QApplication(sys.argv) w = QWebView() w.show() g = GoogleTtsPlayer('qt') g.setParentWidget(w) QTimer.singleShot(1000, lambda: g.speak(q, language='ja')) ret = a.exec_() print "leave: ret = %i" % ret
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) #Validators for data input ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" ipRegex = QRegExp("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$") ipValidator = QRegExpValidator(self.leGraylogIP) ipValidator.setRegExp(ipRegex) self.leGraylogIP.setValidator(ipValidator) self.leGraylogPort.setValidator(QIntValidator(1, 65535)) self.leGraylogHttpPort.setValidator(QIntValidator(1, 65535)) ipValidator = QRegExpValidator(self.leAsterixIP) ipValidator.setRegExp(ipRegex) self.leAsterixIP.setValidator(ipValidator) self.leAsterixPort.setValidator(QIntValidator(1, 65535)) self.leAsterixSic.setValidator(QIntValidator(1, 256)) self.leIamodPort.setValidator(QIntValidator(1, 65535)) self.leIamodThreshold.setValidator(QIntValidator(0, 99999)) #Define functions for GUI actions self.pbStart.clicked.connect(self.__startServer) self.pbStop.clicked.connect(self.__stopServer) self.actionLicense.triggered.connect(self.__license) self.actionLoad_Config_File.triggered.connect(self.__dialogConfigFile) self.pbSaveConfiguration.clicked.connect(self.__writeConfigFile) self.pbStart.setEnabled(False) if self.__checkServerIsRunning(): self.__serverStatusImage(True) else: self.__serverStatusImage(False) self.configFile = ConfigParser.ConfigParser() self.view = QWebView() self.webLayout.addWidget(self.view) self.view.settings().setAttribute( QWebSettings.JavascriptCanOpenWindows, True) self.view.settings().setAttribute(QWebSettings.LocalStorageEnabled, True) self.pbConnect.clicked.connect(self.__connectHttpServer) l = QVBoxLayout(self.tab2) sc = StaticCanvas(self.tab2, width=5, height=4, dpi=100) dc = DynamicCanvas(self.tab2, width=5, height=4, dpi=100) l.addWidget(sc) l.addWidget(dc)
def createWidgets(self): self.backButton = QToolButton() self.backButton.setIcon(QIcon(":/go-back.svg")) self.backButton.setText("&Back") self.backButton.setToolTip("""\ <p><b>Back</b> ({})</p> <p>Navigate to the previous page.</p>""".format( QKeySequence("Alt+Left").toString())) self.forwardButton = QToolButton() self.forwardButton.setIcon(QIcon(":/go-forward.svg")) self.forwardButton.setText("&Forward") self.forwardButton.setToolTip("""\ <p><b>Forward</b> ({})</p> <p>Navigate to the page you've just come back from.</p>""".format( QKeySequence("Alt+Right").toString())) self.contentsButton = QToolButton() self.contentsButton.setIcon(QIcon(":/go-home.svg")) self.contentsButton.setText("&Contents") self.contentsButton.setToolTip("""\ <p><b>Contents</b> ({})</p> <p>Navigate to the contents page.</p>""".format( QKeySequence("Alt+Home").toString())) self.searchLineEdit = Widgets.LegendLineEdit.LineEdit( "Search (F3 or Ctrl+F)") self.searchLineEdit.setToolTip("""\ <p><b>Search editor</p> <p>Type in a word to search for in the online help pages and press <b>Enter</b> or <b>F3</b> to search.</p>""") self.zoomInButton = QToolButton() self.zoomInButton.setIcon(QIcon(":/zoomin.svg")) self.zoomInButton.setText("&Zoom In") self.zoomInButton.setToolTip("""\ <p><b>Zoom In</b> ({})</p> <p>Make the text bigger.</p>""".format( QKeySequence("Alt++").toString())) self.zoomOutButton = QToolButton() self.zoomOutButton.setIcon(QIcon(":/zoomout.svg")) self.zoomOutButton.setText("Zoom &Out") self.zoomOutButton.setToolTip("""\ <p><b>Zoom Out</b> ({})</p> <p>Make the text smaller.</p>""".format( QKeySequence("Alt+-").toString())) width = self.fontMetrics().width(self.zoomOutButton.text() + " ") for button in (self.backButton, self.forwardButton, self.contentsButton, self.zoomInButton, self.zoomOutButton): button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) button.setMinimumWidth(width) button.setFocusPolicy(Qt.NoFocus) self.browser = QWebView() page = self.browser.page() page.setLinkDelegationPolicy(QWebPage.DelegateAllLinks) if self.debug: self.urlLabel = QLabel()
def __init__(self): super(Browser, self).__init__() self.layout = QStackedLayout(self) self.frontView = QWebView(self) self.backView = QWebView(self) self.frontView.page().networkAccessManager().sslErrors.connect(self.onSslErrors) self.backView.page().networkAccessManager().sslErrors.connect(self.onSslErrors) self.hostname = os.uname()[1] self.layout.setStackingMode(QStackedLayout.StackAll) self.layout.addWidget(self.frontView) self.layout.addWidget(self.backView) self.commands = { 'help' : self.cmdHelp, 'refresh' : self.cmdRefresh, 'add' : self.cmdAdd, 'del' : self.cmdDel, 'list' : self.cmdList, 'zoom' : self.cmdZoom, 'fs' : self.cmdFs, 'exit' : self.cmdExit, 'next' : self.cmdNext, 'restart' : self.cmdRestart, 'upgrade' : self.cmdUpgrade, } self.timer = QTimer() self.timer.setSingleShot(False) self.sites = list() self.siteId = -1 self.socket = False url = QUrl("http://dmr.tokiogroup.com/rrs.php") self.sites.append(Site(url, 10, 1)) url = QUrl("http://dmr.tokiogroup.com/lastheard.php") self.sites.append(Site(url, 10, 1)) self.server = QTcpServer() self.server.listen(QHostAddress.Any, 4242) self.connect(self.server, SIGNAL("newConnection()"), self, SLOT("onConnection()")); self.connect(self.timer, SIGNAL("timeout()"), self, SLOT("goNext()")); self.goNext() self.goNext()
def new_tab(self): """Open new tab.""" tasklist = QTreeView() tasklist.hide() tasklist.setObjectName('taskList') tasklist.setMinimumWidth(100) tasklist.setMaximumWidth(250) new_tab = QWebView() new_tab.setObjectName('webView') inspector = QWebInspector(self) inspector.setObjectName('webInspector') inspector.hide() page_layout = QVBoxLayout() page_layout.setSpacing(0) page_layout.setContentsMargins(0, 0, 0, 0) page_layout.addWidget(new_tab) page_layout.addWidget(inspector) page_widget = QFrame() page_widget.setObjectName('pageWidget') page_widget.setLayout(page_layout) complete_tab_layout = QHBoxLayout() complete_tab_layout.setSpacing(0) complete_tab_layout.setContentsMargins(0, 0, 0, 0) complete_tab_layout.addWidget(tasklist) complete_tab_layout.addWidget(page_widget) complete_tab_widget = QFrame() complete_tab_widget.setLayout(complete_tab_layout) new_tab.load(QUrl(self.startpage)) self.tabs.setUpdatesEnabled(False) if self.new_tab_behavior == "insert": self.tabs.insertTab(self.tabs.currentIndex()+1, complete_tab_widget, unicode(new_tab.title())) elif self.new_tab_behavior == "append": self.tabs.appendTab(complete_tab_widget, unicode(new_tab.title())) self.tabs.setCurrentWidget(complete_tab_widget) self.tabs.setTabText(self.tabs.currentIndex(), unicode(self.tabs.currentWidget().findChild(QFrame, unicode('pageWidget')).findChild(QWebView, unicode('webView')).title())) self.tabs.setUpdatesEnabled(True) # tab.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) # tab.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) new_tab.titleChanged.connect(self.change_tab) new_tab.urlChanged.connect(self.change_tab) new_tab.loadStarted.connect(self.load_start) new_tab.loadFinished.connect(self.load_finish) new_tab.loadProgress.connect(self.pbar.setValue) new_tab.page().linkHovered.connect(self.linkHover) inspector.setPage(new_tab.page())
def about_license(self): try: f = open(get_file("GNU_HTML")) license = QtGui.QDialog() license.resize(650, 480) license.setWindowTitle("SynchroniZeRD License") licenseText = QWebView() licenseText.setHtml(f.read()) layout = QtGui.QGridLayout(license) layout.addWidget(licenseText) license.exec_() except: QMessageBox.critical(self, "Error", "Unable to open GNU_HTML License file.")
class Browser(QObject): # pylint: disable=too-many-public-methods __execute_script_called = Signal(str) def __init__(self): super().__init__() self.app = QApplication([]) self.webview = QWebView() self.webview.setAttribute(Qt.WA_DeleteOnClose) self.webview.destroyed.connect(self.app.quit) self.__execute_script_called.connect(self.__execute_script) def __execute_script(self, javascript_code: str): assert current_thread_is_main() self.webview.page().mainFrame().evaluateJavaScript(javascript_code) def execute_script(self, javascript_code: str): if current_thread_is_main(): self.__execute_script(javascript_code) else: self.__execute_script_called.emit(javascript_code) def run(self, url): assert current_thread_is_main() self.webview.showFullScreen() self.webview.load(url) self.app.exec_()
def __init__(self): super(WebWindow,self).__init__() Loader = QUiLoader() uiFile = QFile("C:/Qt/Qt5.0.1/Tools/QtCreator/bin/ScriptAnalyzerNew/webview.ui") uiFile.open(QFile.ReadOnly) self.mainWindow = Loader.load(uiFile) WebV = QWebView() layout = QVBoxLayout() layout.addWidget(WebV) self.mainWindow.webW.setLayout(layout) WebV.load(QUrl("file:///C:/Users/Administrator/Desktop/demo.html"))
class Robot(object): def __init__(self): self.view = QWebView() self.page = self.view.page() def start(self): self.view.show() QtCore.QObject.connect(self.view, QtCore.SIGNAL("loadFinished(bool)"), self.loaded) self.view.load(QUrl('https://login.yahoo.com/config/login_verify2?&.src=ym')) def loaded(self): url = self.view.url().toString() self.view.show() print "Loading %s finished" % url frame = self.page.mainFrame() els = frame.findAllElements("a[id*='copyright']") for i in range(els.count()): print 'Plain Text [%s]' % els.at(i).toPlainText().encode('utf8','ignore') print 'inner xml %s' % els.at(i).toInnerXml() child_els = els.at(i).findAll('*') for j in range(child_els.count()): print 'childs inner xml [%s] ' % child_els.at(j).toInnerXml()
def createWebView( nIndex ): global functionID global currentWebView functionID = nIndex currentWebView = QWebView() currentWebView._jsfuncs = JSFuncs() currentWebView.page().mainFrame().addToJavaScriptWindowObject("jsfuncs", currentWebView._jsfuncs) QObject.connect( currentWebView, QtCore.SIGNAL('loadFinished( bool )'), onLoadFinished ) currentWebView.load(PAGE_DATA % FUNCTIONS_LIST[ nIndex ]) currentWebView.show()
def __init__(self, path, parent=None, encoding='utf8'): QWebView.__init__(self, parent) self.path = path self.encoding = encoding self.__watcher = QFileSystemWatcher(self) self.__watcher.fileChanged.connect(self.loadFile) self.__watcher.directoryChanged.connect(self.loadFile) self.__watcher.addPath(self.path) self.__watcher.addPath(QFileInfo(self.path).path()) self.setWindowTitle(self.path) self.loadFile()
def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("Dialog")) Dialog.resize(804, 604) self.layout = QVBoxLayout(Dialog) self.qwebview = QWebView(Dialog) self.qwebview.setGeometry(QtCore.QRect(0, 50, 800, 600)) self.qwebview.setObjectName(_fromUtf8("kwebview")) self.lineEdit = QtGui.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(10, 20, 790, 25)) self.lineEdit.setObjectName(_fromUtf8("lineEdit")) self.layout.addWidget(self.lineEdit) self.layout.addWidget(self.qwebview) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def show(self): #It is IMPERATIVE that all forward slashes are scrubbed out, otherwise QTWebKit seems to be # easily confused kickOffHTML = join( dirname(__file__).replace('\\', '/'), "templates/index.html").replace('\\', '/') #This is basically a browser instance self.web = QWebView() #Unlikely to matter but prefer to be waiting for callback then try to catch # it in time. self.web.loadFinished.connect(self.onLoad) self.web.load(kickOffHTML) self.web.show()
def initUI(self): # Plugin QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True) self.b = QWebView() PGrupo = None PID = None Pregunta = input("Elige [ ID ] o [ GRUPO ] (Respeta mayúsculas) : ") if Pregunta == "GRUPO": clear() PGrupo = input("Escribe el nombre del [ GRUPO ] : ") self.b.load(QUrl("http://xat.com/"+PGrupo)) elif Pregunta == "ID": clear() PID = int(input("Escribe la [ID] : ")) self.b.load(QUrl("http://xat.com/web_gear?id="+PID)) else: print("Asi no idiota") return self.initUI() self.b.setWindowTitle('SearchXat') # Icon #self.b.setWindowIcon(QtGui.QIcon('icon.png')) self.b.show()
def __init__(self): if Jaime.instance: raise Exception("Can't call to constructor with another instance created") self.tabs_widget = QTabWidget() self.view = QWebView() self.page = QWebPage() self.config = SafeConfigParser() Logger.getLoggerFor(self.__class__) self.tabs_widget.insertTab(0,self.view,'label') self.tabs = {} self.graph_file = None self.close_tab_timer = QTimer() self.close_tab_timer.setSingleShot(False) #cada 30 segundos se cierra un tab self.close_tab_timer.setInterval(10000) self.view.setPage(self.page) self.tabs['mainTab'] = self.view self.network_manager = CustomNetworkAccessManager.getInstance() self.navigator = Navigator.getInstance() self.route_node = YahooRouteNode.getInstance() self.graph_parser = GraphParser.getInstance() self.page.setNetworkAccessManager(self.network_manager)
def event ( self, event ): """ Handles an event for the object. """ if event.type() in ClickEvents: self._editor.middle_button = (event.button() == Qt.MidButton) return QWebView.event( self, event )
def main(): app = QApplication([]) view = QWebView() fac = PluginFactory() view.page().setPluginFactory(fac) QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True) view.load(QUrl(sys.argv[1])) view.resize(840, 600) view.show() return app.exec_()
def __init__(self, parent=None): # call QWidget's __init__ super(MapApp, self).__init__(parent) self.setWindowTitle("Map Application") f = open("map.html", "r") html = f.read() f.close() # declare our QWebView and set the URL to the source of the map.html file. # we must also set a URL (which QtWebKit will use if we ask for the URL of the page) self.webView = QWebView() self.webView.setHtml(html, baseUrl=QUrl("http://local")) self.webView.show() self.location = QLineEdit() self.go = QPushButton("Find this location") self.go.clicked.connect(self.findLocation) # set up our layout and add the instance of the QWebView self.mainLayout = QGridLayout() self.mainLayout.addWidget(self.location) self.mainLayout.addWidget(self.go) self.mainLayout.addWidget(self.webView) self.setLayout(self.mainLayout)
def __init__(self, authorize_url): """ Custom Webview widget to handle authentication of an authorisation url. authorize_url is string returned via flow_from_clientsecrets.step1_get_authorize_url object If Authorization is successful, returns an access code required for step2 of oauth flow object """ QWebView.__init__(self) self.URL = QUrl.fromPercentEncoding(str(authorize_url)) self.setUrl(self.URL) self.titleChanged.connect(self.handleTitleChange) self.load(self.URL) self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.Popup)
def __init__(self, media, parent): super(WebMediaView, self).__init__(media, parent) self._widget = QWebView(parent) self._widget.setGeometry(media['_geometry']) self.set_default_widget_prop() self._widget.setDisabled(True) self._widget.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self._widget.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
def webView(self): if self._webView is None: self._webView = QWebView() #Hook up our webView to UI, log, etc. self.connect(self._webView.page(), SIGNAL("unsupportedContent(QNetworkReply*)"), self.webPageError) self.connect(self._webView, SIGNAL("statusBarMessage(QString)"), self.updateStatusBar) return self._webView
def get_site_text(url='https://test.api.unistream.com/help/index.html'): """Функция возвращает содержимое по указанному url.""" import sys from PySide.QtGui import QApplication from PySide.QtCore import QEventLoop from PySide.QtWebKit import QWebSettings, QWebPage, QWebView from PySide.QtNetwork import QNetworkProxyFactory # Чтобы не было проблем запуска компов с прокси: QNetworkProxyFactory.setUseSystemConfiguration(True) QWebSettings.globalSettings().setAttribute( QWebSettings.DeveloperExtrasEnabled, True) class WebPage(QWebPage): def userAgentForUrl(self, url): return 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0' if QApplication.instance() is None: QApplication(sys.argv) view = QWebView() view.setPage(WebPage()) view.load(url) # Ждем пока прогрузится страница loop = QEventLoop() view.loadFinished.connect(loop.quit) loop.exec_() doc = view.page().mainFrame().documentElement() print(len(doc.toOuterXml()), len(doc.toPlainText())) return doc.toPlainText()
def testPlugin(self): view = QWebView() fac = PluginFactory() view.page().setPluginFactory(fac) QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True) view.load(QUrl(os.path.join(os.path.abspath(os.path.dirname(__file__)), "qmlplugin", "index.html"))) view.resize(840, 600) view.show() QTimer.singleShot(500, self.app.quit) self.app.exec_()
def testQVariantListProperty(self): class Obj(object): list = ['foo', 'bar', 'baz'] obj = Obj() wrapper_dict = {} for name in ['list']: getter = lambda arg=None, name=name: getattr(obj, name) wrapper_dict[name] = Property('QVariantList', getter) wrapper = type('PyObj', (QObject,), wrapper_dict) view = QWebView() frame = view.page().mainFrame() frame.addToJavaScriptWindowObject('py_obj', wrapper()) html = ''' <html><body> <script type="text/javascript"> document.write(py_obj.list) </script> </body></html> ''' view.setHtml(html) view.show() self.app.exec_()
class HTMLApplication(object): def __init__(self, index_file, bridge = None, parent = None): self.index_file = index_file self.bridge = bridge self.mainWindow = QMainWindow(parent) self.mainWindow.setWindowTitle("My hub") self.mainWindow.setFixedSize(290,550); #This is basically a browser instance self.web = QWebView() self.mainWindow.setCentralWidget(self.web); def show(self): #It is IMPERATIVE that all forward slashes are scrubbed out, otherwise QTWebKit seems to be # easily confused #Asyncronously loads the website, in the interim you could throw up a splash screen # but this is relatively quick so it might not be worth it. self.web.loadFinished.connect(self.onLoad) self.web.setPage(WebPage()) self.web.load(self.index_file) self.mainWindow.show() #self.web.show() def onLoad(self): self.myPage = self.web.page() self.myPage.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True) self.myPage.setNetworkAccessManager(WKNetworkAccessManager()) self.myFrame = self.myPage.mainFrame() for name, obj in self.bridge.items(): self.myFrame.addToJavaScriptWindowObject(name, obj) self.myFrame.evaluateJavaScript("ApplicationIsReady();") def onReload(self): print "reloaded"
def main(): app = QApplication([]) webview = QWebView() loop = QEventLoop() # 创建QEventLoop对象,该对象用于创建本地时间循环 webview.loadFinished.connect(loop.quit) # QWebView对象的loadFinished回调连接了QEventLoop的quit方法,从而可以在网页加载完成之后停止事件循环 webview.load(QUrl('http://example.webscraping.com/places/default/search')) loop.exec_() # QwebView的加载方法是异步的,执行过程会在网页加载时立即传入下一行, # 但我们希望等待网页加载完成,因此需要在事件循环启动时调用loop.exec_() webview.show() # 调用QWebViewGUI的show()方法来显示渲染窗口,以方便调试 frame = webview.page().mainFrame() # 创建一个指代框架的变量 # 使用CSS模式在框架中定位元素,然后设置搜索参数 frame.findFirstElement('#search_term').setAttribute('Value', '.') frame.findFirstElement('#page_size option:checked').setPlainText('1000') # 使用evaluate JavaScript()方法提交事件,模拟点击事件 frame.findFirstElement('#search').evaluateJavaScript('this.click()') app.exec_() # 进入应用的事件循环,可以对表单操作进行复查,如果没有使用该方法,脚本就会直接结束 # 等待结果,三种方法处理: # 1、等待一定时间,期望AJAX事件能够在此时刻之前完成 # 2、重写Qt的网络管理器,跟踪URL请求完成的事件 # 3、轮询网页,等待特定内容出现,下面采用第三种方法 elements = None while not elements: app.processEvents() # 用于给Qt事件循环执行任务的事件,比如响应点击事件和更新GUI elements = frame.findAllElements('#results a') countries = [e.toPlainText().strip() for e in elements] print countries
def initUI(self): hbox = QtGui.QVBoxLayout() #hbox.addStretch() plot_view = QWebView() self.page = _LoggedPage() #page.newData.connect(onNewData) self.page.commandRecieved.connect(self.commandRecieved) self.page.helpNeeded.connect(self.helpNeeded) self.page.tabPressed.connect(self.tabPressed) plot_view.setPage(self.page) #plot_path = 'test.html' dir_path = os.path.dirname(os.path.realpath(__file__)) plot_view.load(QUrl('file:///%s/ptty.html' % dir_path)) plot_view_settings = plot_view.settings() plot_view_settings.setAttribute(QWebSettings.WebGLEnabled, True) plot_view_settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True) hbox.addWidget(plot_view) self.setLayout(hbox) self.setWindowTitle('WTerminal') self.show()
def testPlugin(self): view = QWebView() fac = PluginFactory() view.page().setPluginFactory(fac) QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True) view.load( QUrl( os.path.join(os.path.abspath(os.path.dirname(__file__)), 'qmlplugin', 'index.html'))) view.resize(840, 600) view.show() QTimer.singleShot(500, self.app.quit) self.app.exec_()
def __init__(self, parent=None): """Create Qt widgets, connect event handlers.""" super(App, self).__init__(parent) self.windowTitle = 'DMD | ' self.fileName = '' self.setWindowTitle(self.windowTitle + 'Unsaved File') exitAction = QAction('Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(self.close) openAction = QAction('Open', self) openAction.setShortcut('Ctrl+O') openAction.setStatusTip('Open Markdown File') openAction.triggered.connect(self.openFile) newAction = QAction('New', self) newAction.setShortcut('Ctrl+N') newAction.setStatusTip('New Markdown File') newAction.triggered.connect(self.newFile) saveAction = QAction('Save', self) saveAction.setShortcut('Ctrl+S') saveAction.setStatusTip('Save File') saveAction.triggered.connect(self.saveFile) self.statusBar() menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(newAction) fileMenu.addAction(openAction) fileMenu.addAction(saveAction) fileMenu.addAction(exitAction) self.setGeometry(300, 300, 1024, 768) self.show() self.txtInput = QTextEdit() self.txtInput.setTabStopWidth(20) self.webPreview = QWebView() self.webPreview.setHtml('Start typing...', baseUrl=QUrl('preview')) self.txtInput.textChanged.connect(self.loadPreview) splitter = QSplitter() splitter.addWidget(self.txtInput) splitter.addWidget(self.webPreview) self.setCentralWidget(splitter)