You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:25:13