Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QtWebEngine
  4. Set Home Page In Browser
Forum Updated to NodeBB v4.3 + New Features

Set Home Page In Browser

Scheduled Pinned Locked Moved Unsolved QtWebEngine
2 Posts 2 Posters 336 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    nareba2780
    wrote on last edited by
    #1

    I'm making a web browser just for fun and this is my first question about it here

    from cProfile import label
    from PyQt5.QtCore import QUrl
    from PyQt5.QtWidgets import QMainWindow, QTabWidget, QStatusBar, QToolBar, QAction, QShortcut, QLineEdit, QMessageBox, QApplication, QLabel
    from PyQt5.QtGui import QKeySequence, QIcon
    from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
    import sys
    import os
    os.system('cls' if os.name == 'nt' else 'clear')
    
    class MainWindow(QMainWindow):
    
    	def __init__(self, *args, **kwargs):
    		super(MainWindow, self).__init__(*args, **kwargs)
    
    		self.tabs = QTabWidget()
    
    		self.tabs.setDocumentMode(True)
    
    		self.homepage = "https://google.com"
    
    		self.tabs.tabBarDoubleClicked.connect(self.tab_open_doubleclick)
    
    		self.tabs.currentChanged.connect(self.current_tab_changed)
    
    		self.tabs.setTabsClosable(True)
    
    		self.tabs.tabCloseRequested.connect(self.close_current_tab)
    
    		self.setCentralWidget(self.tabs)
    
    		self.status = QStatusBar()
    
    		self.setStatusBar(self.status)
    
    		self.navtb = QToolBar("Navigation")
    
    		self.addToolBar(self.navtb)
    
    		back_btn = QAction("BACK", self)
    		back_btn.setStatusTip("Back to previous page")
    		back_btn.triggered.connect(lambda: self.tabs.currentWidget().back())
    		self.navtb.addAction(back_btn)
    		back_short = QShortcut(QKeySequence("Alt+Left"), self)
    		back_short.activated.connect(lambda: self.tabs.currentWidget().back())
    
    		next_btn = QAction("FORWARD", self)
    		next_btn.setStatusTip("Forward to next page")
    		next_btn.triggered.connect(lambda: self.tabs.currentWidget().forward())
    		self.navtb.addAction(next_btn)
    		next_short = QShortcut(QKeySequence("Alt+Right"), self)
    		next_short.activated.connect(lambda: self.tabs.currentWidget().forward())
    
    		reload_btn = QAction("RELOAD", self)
    		reload_btn.setStatusTip("Reload page")
    		reload_btn.triggered.connect(lambda: self.tabs.currentWidget().reload())
    		self.navtb.addAction(reload_btn)
    		reload_short = QShortcut(QKeySequence("F5"), self)
    		reload_short.activated.connect(lambda: self.tabs.currentWidget().reload())
    
    		stop_btn = QAction("STOP", self)
    		stop_btn.setStatusTip("Stop loading current page")
    		stop_btn.triggered.connect(lambda: self.tabs.currentWidget().stop())
    		self.navtb.addAction(stop_btn)
    		stop_short = QShortcut(QKeySequence("Alt+ESC"), self)
    		stop_short.activated.connect(lambda: self.tabs.currentWidget().stop())
    
    		home_btn = QAction("HOME", self)
    		home_btn.setStatusTip("Go home")
    		home_btn.triggered.connect(self.navigate_home)
    		self.navtb.addAction(home_btn)
    		home_short = QShortcut(QKeySequence("Alt+Home"), self)
    		home_short.activated.connect(self.navigate_home)
    
    		sethome_btn = QAction("SETHOME", self)
    		sethome_btn.setStatusTip("Set homepage as current url")
    		sethome_btn.triggered.connect(self.sethome())
    		self.navtb.addAction(sethome_btn)
    
    		ssl_btn = QAction("SSL", self)
    		ssl_btn.setStatusTip("Page information")
    		ssl_btn.triggered.connect(self.ssl_check)
    		self.navtb.addAction(ssl_btn)
    
    		self.urlbar = QLineEdit()
    
    		self.urlbar.returnPressed.connect(self.navigate_to_url)
    
    		self.navtb.addWidget(self.urlbar)
    
    		empty1_lbl = QLabel("       ",self)
    		self.navtb.addWidget(empty1_lbl)
    
    		self.add_new_tab(QUrl(self.homepage), 'Homepage')
    
    		self.show()
    
    		self.setWindowTitle("Souvlaki Browser")
    
    	def sethome(self):
    		url = self.urlbar.text
    		self.homepage = url
    
    	def add_new_tab(self, qurl = None, label ="Blank"):
    
    		if qurl is None:
    
    			qurl = QUrl(self.homepage)
    
    		browser = QWebEngineView()
    		browser.settings().setAttribute(
                QWebEngineSettings.FullScreenSupportEnabled, True
            )
    
    		browser.setUrl(qurl)
    
    		i = self.tabs.addTab(browser, label)
    		self.tabs.setCurrentIndex(i)
    
    		browser.urlChanged.connect(lambda qurl, browser = browser:
    								self.update_urlbar(qurl, browser))
    
    		browser.page().profile().downloadRequested.connect(self._downloadRequested)
    
    		browser.page().fullScreenRequested.connect(lambda request, browser = browser: self.handle_fullscreen_requested(request))
    
    		browser.loadFinished.connect(lambda _, i = i, browser = browser:
    									self.tabs.setTabText(i, browser.page().title()))
    
    		browser.loadFinished.connect(lambda _, i = i, browser = browser:self.tabs.setTabIcon(i, browser.page().icon()))
    
    
    	def tab_open_doubleclick(self, i):
    
    		if i == -1:
    			self.add_new_tab()
            
    	def ssl_check(self):
    		q = QUrl(self.urlbar.text())
    		if q.scheme() == "http":
    			QMessageBox.warning(self, "Security Information", "This website is insecure")
    		if q.scheme() == "https":
    			QMessageBox.information(self, "Security Information", "This website is secure")
    
    	def handle_fullscreen_requested(self, request):
    		request.accept()
    		if request.toggleOn():
    			self.showFullScreen()
    			self.statusBar().hide()
    			self.navtb.hide()
    			self.tabs.tabBar().hide()
    		else:
    			self.showNormal()
    			self.statusBar().show()
    			self.navtb.show()
    			self.tabs.tabBar().show()
    
    	def _downloadRequested(self,item):
    		item.accept()
    
    	def current_tab_changed(self, i):
    
    		qurl = self.tabs.currentWidget().url()
    
    		self.update_urlbar(qurl, self.tabs.currentWidget())
    
    		self.update_title(self.tabs.currentWidget())
    
    	def close_current_tab(self, i):
    
    		if self.tabs.count() < 2:
    			return
    
    		self.tabs.removeTab(i)
    
    	def update_title(self, browser):
    
    		if browser != self.tabs.currentWidget():
    			return
    
    		title = self.tabs.currentWidget().page().title()
    
    	def navigate_home(self):
    
    		self.tabs.currentWidget().setUrl(QUrl(self.homepage))
    
    	def navigate_to_url(self):
    
    		q = QUrl(self.urlbar.text())
    
    		if q.scheme() == "":
    
    			q.setScheme("http")
    
    		self.tabs.currentWidget().setUrl(q)
    
    	def update_urlbar(self, q, browser = None):
    
    		if browser != self.tabs.currentWidget():
    
    			return
    
    		self.urlbar.setText(q.toString())
    
    		self.urlbar.setCursorPosition(0)
    
    app = QApplication(sys.argv)
    
    app.setApplicationName("Souvlaki Browser")
    
    app.setWindowIcon(QIcon("icon.png"))
    
    window = MainWindow()
    
    app.exec_()
    

    Why sethome() function doesn't work.I'm searching this for hours please help me

    JonBJ 1 Reply Last reply
    0
    • N nareba2780

      I'm making a web browser just for fun and this is my first question about it here

      from cProfile import label
      from PyQt5.QtCore import QUrl
      from PyQt5.QtWidgets import QMainWindow, QTabWidget, QStatusBar, QToolBar, QAction, QShortcut, QLineEdit, QMessageBox, QApplication, QLabel
      from PyQt5.QtGui import QKeySequence, QIcon
      from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
      import sys
      import os
      os.system('cls' if os.name == 'nt' else 'clear')
      
      class MainWindow(QMainWindow):
      
      	def __init__(self, *args, **kwargs):
      		super(MainWindow, self).__init__(*args, **kwargs)
      
      		self.tabs = QTabWidget()
      
      		self.tabs.setDocumentMode(True)
      
      		self.homepage = "https://google.com"
      
      		self.tabs.tabBarDoubleClicked.connect(self.tab_open_doubleclick)
      
      		self.tabs.currentChanged.connect(self.current_tab_changed)
      
      		self.tabs.setTabsClosable(True)
      
      		self.tabs.tabCloseRequested.connect(self.close_current_tab)
      
      		self.setCentralWidget(self.tabs)
      
      		self.status = QStatusBar()
      
      		self.setStatusBar(self.status)
      
      		self.navtb = QToolBar("Navigation")
      
      		self.addToolBar(self.navtb)
      
      		back_btn = QAction("BACK", self)
      		back_btn.setStatusTip("Back to previous page")
      		back_btn.triggered.connect(lambda: self.tabs.currentWidget().back())
      		self.navtb.addAction(back_btn)
      		back_short = QShortcut(QKeySequence("Alt+Left"), self)
      		back_short.activated.connect(lambda: self.tabs.currentWidget().back())
      
      		next_btn = QAction("FORWARD", self)
      		next_btn.setStatusTip("Forward to next page")
      		next_btn.triggered.connect(lambda: self.tabs.currentWidget().forward())
      		self.navtb.addAction(next_btn)
      		next_short = QShortcut(QKeySequence("Alt+Right"), self)
      		next_short.activated.connect(lambda: self.tabs.currentWidget().forward())
      
      		reload_btn = QAction("RELOAD", self)
      		reload_btn.setStatusTip("Reload page")
      		reload_btn.triggered.connect(lambda: self.tabs.currentWidget().reload())
      		self.navtb.addAction(reload_btn)
      		reload_short = QShortcut(QKeySequence("F5"), self)
      		reload_short.activated.connect(lambda: self.tabs.currentWidget().reload())
      
      		stop_btn = QAction("STOP", self)
      		stop_btn.setStatusTip("Stop loading current page")
      		stop_btn.triggered.connect(lambda: self.tabs.currentWidget().stop())
      		self.navtb.addAction(stop_btn)
      		stop_short = QShortcut(QKeySequence("Alt+ESC"), self)
      		stop_short.activated.connect(lambda: self.tabs.currentWidget().stop())
      
      		home_btn = QAction("HOME", self)
      		home_btn.setStatusTip("Go home")
      		home_btn.triggered.connect(self.navigate_home)
      		self.navtb.addAction(home_btn)
      		home_short = QShortcut(QKeySequence("Alt+Home"), self)
      		home_short.activated.connect(self.navigate_home)
      
      		sethome_btn = QAction("SETHOME", self)
      		sethome_btn.setStatusTip("Set homepage as current url")
      		sethome_btn.triggered.connect(self.sethome())
      		self.navtb.addAction(sethome_btn)
      
      		ssl_btn = QAction("SSL", self)
      		ssl_btn.setStatusTip("Page information")
      		ssl_btn.triggered.connect(self.ssl_check)
      		self.navtb.addAction(ssl_btn)
      
      		self.urlbar = QLineEdit()
      
      		self.urlbar.returnPressed.connect(self.navigate_to_url)
      
      		self.navtb.addWidget(self.urlbar)
      
      		empty1_lbl = QLabel("       ",self)
      		self.navtb.addWidget(empty1_lbl)
      
      		self.add_new_tab(QUrl(self.homepage), 'Homepage')
      
      		self.show()
      
      		self.setWindowTitle("Souvlaki Browser")
      
      	def sethome(self):
      		url = self.urlbar.text
      		self.homepage = url
      
      	def add_new_tab(self, qurl = None, label ="Blank"):
      
      		if qurl is None:
      
      			qurl = QUrl(self.homepage)
      
      		browser = QWebEngineView()
      		browser.settings().setAttribute(
                  QWebEngineSettings.FullScreenSupportEnabled, True
              )
      
      		browser.setUrl(qurl)
      
      		i = self.tabs.addTab(browser, label)
      		self.tabs.setCurrentIndex(i)
      
      		browser.urlChanged.connect(lambda qurl, browser = browser:
      								self.update_urlbar(qurl, browser))
      
      		browser.page().profile().downloadRequested.connect(self._downloadRequested)
      
      		browser.page().fullScreenRequested.connect(lambda request, browser = browser: self.handle_fullscreen_requested(request))
      
      		browser.loadFinished.connect(lambda _, i = i, browser = browser:
      									self.tabs.setTabText(i, browser.page().title()))
      
      		browser.loadFinished.connect(lambda _, i = i, browser = browser:self.tabs.setTabIcon(i, browser.page().icon()))
      
      
      	def tab_open_doubleclick(self, i):
      
      		if i == -1:
      			self.add_new_tab()
              
      	def ssl_check(self):
      		q = QUrl(self.urlbar.text())
      		if q.scheme() == "http":
      			QMessageBox.warning(self, "Security Information", "This website is insecure")
      		if q.scheme() == "https":
      			QMessageBox.information(self, "Security Information", "This website is secure")
      
      	def handle_fullscreen_requested(self, request):
      		request.accept()
      		if request.toggleOn():
      			self.showFullScreen()
      			self.statusBar().hide()
      			self.navtb.hide()
      			self.tabs.tabBar().hide()
      		else:
      			self.showNormal()
      			self.statusBar().show()
      			self.navtb.show()
      			self.tabs.tabBar().show()
      
      	def _downloadRequested(self,item):
      		item.accept()
      
      	def current_tab_changed(self, i):
      
      		qurl = self.tabs.currentWidget().url()
      
      		self.update_urlbar(qurl, self.tabs.currentWidget())
      
      		self.update_title(self.tabs.currentWidget())
      
      	def close_current_tab(self, i):
      
      		if self.tabs.count() < 2:
      			return
      
      		self.tabs.removeTab(i)
      
      	def update_title(self, browser):
      
      		if browser != self.tabs.currentWidget():
      			return
      
      		title = self.tabs.currentWidget().page().title()
      
      	def navigate_home(self):
      
      		self.tabs.currentWidget().setUrl(QUrl(self.homepage))
      
      	def navigate_to_url(self):
      
      		q = QUrl(self.urlbar.text())
      
      		if q.scheme() == "":
      
      			q.setScheme("http")
      
      		self.tabs.currentWidget().setUrl(q)
      
      	def update_urlbar(self, q, browser = None):
      
      		if browser != self.tabs.currentWidget():
      
      			return
      
      		self.urlbar.setText(q.toString())
      
      		self.urlbar.setCursorPosition(0)
      
      app = QApplication(sys.argv)
      
      app.setApplicationName("Souvlaki Browser")
      
      app.setWindowIcon(QIcon("icon.png"))
      
      window = MainWindow()
      
      app.exec_()
      

      Why sethome() function doesn't work.I'm searching this for hours please help me

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #2

      @nareba2780 said in Set Home Page In Browser:

      sethome_btn.triggered.connect(self.sethome())

      Look at the slot specification of all your other connect statements, e.g.

      self.tabs.currentChanged.connect(self.current_tab_changed)
      back_btn.triggered.connect(lambda: self.tabs.currentWidget().back())
      

      Can you see the difference? Either specify a method name without the () or use a lambda: ... and you can call a method with ().

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved