PyQt6中如何为QWebEngineView关联的pageActions显示(自定义)图标?
解决PyQt6中QWebEnginePage pageActions显示文本而非图标的问题
问题原因
PyQt6中,QWebEnginePage的内置pageAction(如后退、前进等)不再默认关联图标,仅显示文本标签,这是和PyQt5的核心行为差异。
恢复默认图标
可以借助Qt内置样式(QStyle)获取标准导航图标,为对应的pageAction手动设置图标:
import sys from PyQt6.QtWidgets import QWidget, QToolBar, QVBoxLayout, QApplication, QStyle from PyQt6.QtWebEngineWidgets import QWebEngineView from PyQt6.QtWebEngineCore import QWebEnginePage from PyQt6.QtGui import QIcon, QSize class Example(QWidget): def __init__(self): super().__init__() vbox = QVBoxLayout() self.setLayout(vbox) self.webEngineView = QWebEngineView() self.toolBar = QToolBar() # 可自定义图标显示尺寸 self.toolBar.setIconSize(QSize(24, 24)) # 为后退按钮设置默认图标 back_action = self.webEngineView.pageAction(QWebEnginePage.WebAction.Back) back_icon = self.style().standardIcon(QStyle.StandardPixmap.SP_ArrowBack) back_action.setIcon(back_icon) self.toolBar.addAction(back_action) # 同理设置前进按钮 forward_action = self.webEngineView.pageAction(QWebEnginePage.WebAction.Forward) forward_icon = self.style().standardIcon(QStyle.StandardPixmap.SP_ArrowForward) forward_action.setIcon(forward_icon) self.toolBar.addAction(forward_action) vbox.addWidget(self.toolBar) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec())
设置自定义图标
如果需要使用自定义图标,直接通过QIcon加载本地图标文件,再绑定到对应pageAction即可:
import sys from PyQt6.QtWidgets import QWidget, QToolBar, QVBoxLayout, QApplication from PyQt6.QtWebEngineWidgets import QWebEngineView from PyQt6.QtWebEngineCore import QWebEnginePage from PyQt6.QtGui import QIcon, QSize class Example(QWidget): def __init__(self): super().__init__() vbox = QVBoxLayout() self.setLayout(vbox) self.webEngineView = QWebEngineView() self.toolBar = QToolBar() self.toolBar.setIconSize(QSize(24, 24)) # 为后退按钮设置自定义图标 back_action = self.webEngineView.pageAction(QWebEnginePage.WebAction.Back) # 替换为你的本地图标路径 back_action.setIcon(QIcon("./icons/back_arrow.png")) self.toolBar.addAction(back_action) vbox.addWidget(self.toolBar) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec())
补充说明
- 自定义图标支持PNG、SVG等常见格式,确保文件路径正确(相对路径或绝对路径均可)
- 其他
WebAction类型(如刷新、停止等)都可以用相同方法设置图标 - 若图标仍不显示,可检查工具栏的
iconSize属性,调整到合适尺寸
内容的提问来源于stack exchange,提问作者dukeeloo
相关产品推荐
相关产品推荐

