MacOS下PySimpleGUI菜单栏不显示问题求助
PySimpleGUI菜单栏在MacOS Ventura 13.4.1下不显示的解决办法
问题背景
在MacOS Ventura 13.4.1系统的PyCharm环境中运行PySimpleGUI菜单栏代码时,菜单栏完全不显示。尝试过更换代码、重装/升级PySimpleGUI、重建项目等操作,均无效,且PySimpleGUI默认主菜单也未出现在预期位置。
相关代码如下:
import PySimpleGUI as sg menu_def = [['File', ['New', 'Open', 'Save', 'Exit']], ['Edit', ['Cut', 'Copy', 'Paste', 'Undo']], ['Help', 'About...']] layout = [[sg.Menu(menu_def)], [sg.Multiline("", key='-IN-', expand_x=True, expand_y=True)], [sg.Multiline("", key='-OUT-', expand_x=True, expand_y=True)], [sg.Text("", key='-TXT-', expand_x=True, font=('Arial Bold', 14))] ] window = sg.Window('Menu', layout, size=(715, 300)) while True: event, values = window.read() print(event, values) if event != sg.WIN_CLOSED: window['-TXT-'].update(values[0] + "Menu Button Clicked") if event == 'Copy': txt = window['-IN-'].get() if event == 'Paste': window['-OUT-'].update(value=window['-IN-'].get()) if event == sg.WIN_CLOSED: break window.close()
解决步骤
1. 检查MacOS菜单栏的显示逻辑
MacOS的菜单栏默认显示在屏幕顶部,而非窗口内部。运行程序后,点击PySimpleGUI窗口使其处于激活状态,再查看屏幕顶部的菜单栏是否出现——未激活窗口时,顶部会显示当前活跃应用的菜单。
2. 强制使用Tkinter内置菜单栏模式
PySimpleGUI在MacOS上默认调用系统原生菜单,可能存在兼容性问题。创建窗口时添加native_menu=False参数,强制使用Tkinter的内置菜单栏:
window = sg.Window('Menu', layout, size=(715, 300), native_menu=False)
3. 调整PySimpleGUI版本适配
部分新版本PySimpleGUI对MacOS Ventura的适配存在问题,可尝试降级到稳定版本(如4.60.x系列):
pip install PySimpleGUI==4.60.5
也可以尝试升级到最新版,确认是否已修复相关兼容问题:
pip install --upgrade PySimpleGUI
4. 排除PyCharm环境干扰
- 确认PyCharm使用的Python解释器已正确安装PySimpleGUI:在PyCharm终端运行
pip list查看包版本。 - 直接在系统终端(而非PyCharm内置终端)运行脚本,排除IDE环境的影响。
5. 用极简代码验证菜单功能
运行以下最小化示例,确认菜单是否能正常显示:
import PySimpleGUI as sg menu_def = [['File', ['Exit']]] layout = [[sg.Menu(menu_def)], [sg.Text("测试菜单")]] window = sg.Window('测试', layout) while True: event, _ = window.read() if event == sg.WIN_CLOSED or event == 'Exit': break window.close()
如果此代码能正常显示菜单,说明原代码中的其他组件可能干扰了菜单渲染,可逐步添加原代码组件排查问题。
内容的提问来源于stack exchange,提问作者Niuniu
相关产品推荐
相关产品推荐

