PyQt WebEngineView干扰MainMenu
问题描述:
我试图创建一个应用程序,其中包含一个网页浏览器,但是当我添加网页浏览器时,我的菜单栏在视觉上消失但功能仍然存在。以下是两个图像,一个显示“self.centralWidget(self.web_widget)”注释掉,另一个允许该行运行。如果你运行示例代码,你也会看到,虽然在视觉上看起来整个网页就好像菜单栏不存在一样,但你必须点击每个输入字段和按钮的下方才能激活它,表现方式就像菜单栏实际上是存在的。PyQt WebEngineView干扰MainMenu
示例代码
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()似乎解决了这个问题。
答
我不再相信这是PyQt5的问题,而是图形驱动程序的一个问题。特别是,如果你看看Atlassian的HipChat应用它具有在这里是一个类似的问题: https://jira.atlassian.com/browse/HCPUB-3177
有些人能够通过与编运行从命令提示符应用程序来解决问题“ - 禁用GPU “但这对我的python应用程序不起作用。另一方面,回滚Intel(R)HD Graphics Driver确实解决了我的问题。版本21.20.16.4627是似乎造成问题的那个。
这个问题似乎是唯一的视觉,你试图改变菜单的背景颜色。在Linux中,没有观察到这种效果,如下图所示:http://imgur.com/a/S2Qiu – eyllanesc
@eyllanesc你是什么意思我试图改变菜单的背景颜色?我正在开发Windows FYI,我会更新这个问题来反映这一点。 – aoh
另外,对我来说问题不仅仅是视觉上的问题。如果我点击显示“名字”的文本框,则不会发生任何事情。我需要点击下面(如果菜单栏在那里,它应该在那里)发生任何事情。 – aoh