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

如何在PyQt5中使用菜单栏实现点击子菜单打开指定图片的功能

PyQt5 点击子菜单显示图片修复方案

现有代码问题汇总

  • PyQt API拼写错误:所有方法均为驼峰命名,addmenu应改为addMenu、Qapplication应改为QApplication
  • 菜单层级逻辑错误:QAction是可触发的动作项,不能用addMenu添加,要使用addAction挂载到对应菜单下,原代码未正确关联菜单、子菜单、动作项的层级
  • 缺少QLabel组件初始化:用于展示图片的self.label未提前创建并挂载到主窗口
  • 语法错误:路径字符串中的"是HTML转义符,需替换为正常引号,QPixmap变量名大小写混用导致调用失败
  • 缺少窗口基础配置:未设置窗口尺寸、标题,也未调用show()显示窗口

可运行的修复后代码

import sys
from PyQt5.QtWidgets import QMainWindow, QMenu, QApplication, QLabel
from PyQt5.QtGui import QPixmap, QIcon, QAction

class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
  
    def initUI(self):
        # 基础窗口配置
        self.setWindowTitle("菜单显示图片")
        self.resize(800, 600)

        # 初始化图片展示Label
        self.label = QLabel(self)
        self.label.move(20, 20) # 调整Label在窗口中的位置

        # 构建菜单栏层级
        menubar = self.menuBar()
        filemenu = menubar.addMenu('a') # 一级菜单a
        sub_menu_b = QMenu('b', self) # 二级菜单b
        sub_menu_c = QMenu('c', self) # 二级菜单c

        # 把二级菜单挂载到一级菜单下
        filemenu.addMenu(sub_menu_b)
        filemenu.addMenu(sub_menu_c)

        # 创建触发动作,挂载到二级菜单b下
        show_img_action = QAction('d', self)
        sub_menu_b.addAction(show_img_action)
        # 绑定触发事件
        show_img_action.triggered.connect(self.fileopen)

    def fileopen(self):
        qpixmapvar = QPixmap()
        # 替换为你本地的图片实际路径
        img_path = "C:\\desktop\\A.png"
        load_result = qpixmapvar.load(img_path)
        if load_result:
            self.label.setPixmap(qpixmapvar)
            self.label.resize(qpixmapvar.width(), qpixmapvar.height())
        else:
            self.label.setText(f"图片加载失败,请检查路径:{img_path}")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec())

功能使用说明

运行代码后,点击顶部菜单栏的a -> 下拉选择子菜单b -> 点击d选项,即可加载展示对应路径的图片,若路径错误会显示加载失败提示。

内容的提问来源于stack exchange,提问作者강예찬

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:09:00