[PyQt] Implementing QWebEngineView Automatically Shifts GUI Upward

Allan Horn allan at carbon3d.com
Thu Jul 27 17:49:26 BST 2017


I'm trying to create an application that contains a web browser within it,
but when I add the web browser my menu bar visually disappears but
functionally remains in place. The following are two images, one showing
the "self.centralWidget(self.web_widget)" commented out, and the other
allows that line to run. If you run the example code, you will also see
that while visually the entire web page appears as if the menu bar wasn't
present, you have to click slightly below each entry field and button in
order to activate it, behaving as if the menu bar was in fact present.

It's interesting that this doesn't happen when on FullScreen mode. It is
almost as if implementing QEngineView causes the GUI to visually display as
if it is in FullScreenMode (even though the top "python3" bar remains) but
practically the GUi still believes all the objects are located as if
FullScreenMode was disabled.

This appears to only be an issue in windows.

*Development Environment* Windows 10, pyqt5-5.9

*Web Widget Commented Out* [image: enter image description here]
<https://i.stack.imgur.com/qo2XY.png>

*Web Widget Active* [image: enter image description here]
<https://i.stack.imgur.com/QFCfj.png>

*Example Code*

import osimport sysfrom PyQt5.QtWidgets import *from PyQt5.QtCore
import *from PyQt5.QtWebEngineWidgets import *
class WebPage(QWebEngineView):
    def __init__(self, parent=None):
        QWebEngineView.__init__(self)
        self.current_url = ''
        self.load(QUrl("https://facebook.com"))
        self.loadFinished.connect(self._on_load_finished)

    def _on_load_finished(self):
        print("Url Loaded")
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        # Initialize the Main Window
        super(MainWindow, self).__init__(parent)
        self.create_menu()
        self.add_web_widet()
        self.show()

    def create_menu(self):
        ''' Creates the Main Menu '''
        self.main_menu = self.menuBar()
        self.main_menu_actions = {}

        self.file_menu = self.main_menu.addMenu("Example File Menu")
        self.file_menu.addAction(QAction("Testing Testing", self))

    def add_web_widet(self):
        self.web_widget = WebPage(self)
        self.setCentralWidget(self.web_widget)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.showMaximized()  #  showFullScreen()
    sys.exit(app.exec_())  # only need one app, one running event loop
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20170727/8064b664/attachment-0001.html>


More information about the PyQt mailing list