0

我正在尝试创建一个包含 Web 浏览器的应用程序,但是当我添加 Web 浏览器时,我的菜单栏在视觉上消失了,但在功能上保持不变。以下是两张图片,一张显示注释掉的“self.centralWidget(self.web_widget)”,另一张允许该行运行。如果您运行示例代码,您还会看到虽然整个网页在视觉上看起来好像菜单栏不存在,但您必须在每个输入字段和按钮下方单击才能激活它,表现得好像菜单栏实际上是存在的。

Web Widget 已注释掉 在此处输入图像描述

网络小部件活动 在此处输入图像描述

示例代码

import os
import sys
from 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()
    sys.exit(app.exec_())  # only need one app, one running event loop

开发环境 Windows 10、PyQt5、pyqt5-5.9

编辑

该问题似乎与菜单栏没有直接关系。即使删除菜单栏,问题仍然存在。也就是说,从 showMaximized() 更改为 showFullScreen() 似乎确实可以解决问题。

4

1 回答 1

2

我不再认为这是 PyQt5 的问题,而是图形驱动程序的问题。具体来说,如果您查看 Atlassian 的 HipChat 应用程序,它有一个类似的问题,记录在这里: https ://jira.atlassian.com/browse/HCPUB-3177

有些人可以通过在命令提示符下运行应用程序来解决这个问题,并带有附录“--disable-gpu”,但这对我的 python 应用程序不起作用。另一方面,回滚 Intel(R) HD Graphics Driver 确实解决了我的问题。版本 21.20.16.4627 似乎是导致问题的版本。

在此处输入图像描述

于 2017-08-21T21:11:35.057 回答