【发布时间】:2017-07-25 22:17:31
【问题描述】:
我正在尝试创建一个包含 Web 浏览器的应用程序,但是当我添加 Web 浏览器时,我的菜单栏在视觉上消失了,但功能上仍然存在。以下是两张图片,一张显示注释掉的“self.centralWidget(self.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() 似乎确实可以解决问题。
【问题讨论】:
-
问题似乎只是视觉上的,您尝试更改菜单的背景颜色。在 Linux 中没有观察到这种效果,如下图所示:imgur.com/a/S2Qiu
-
@eyllanesc 你是什么意思我试图改变菜单的背景颜色?我正在使用 Windows 开发,仅供参考,我会更新问题以反映这一点。
-
另外,对我来说问题不仅仅是视觉上的。如果我单击显示“名字”的文本框,则不会发生任何事情。我需要点击它下面(如果菜单栏在那里,它应该在哪里)以发生任何事情。
-
你说得对,我也没有注意到显示了滚动条,是整个图像还是被裁剪了?
-
这就是整个图像。 facebook 的登录页面不需要滚动条。如果你加载“en.wikipedia.org/wiki/Sierra_Nevada_(U.S.)”你会看到滚动条
标签: python pyqt pyqt5 qtwebengine qmenubar