[Bug?] [Solved] Menu not generating an event on latest Raspbian Pi4

Author: byteymanCreated Apr 23, 2025Updated Apr 28, 2025

Bug?

Operating System

bookworm on Pi4 glibc 2.36 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]

PySimpleGUI 5.0.8

tkinter 8.6.13

Python version 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]


Your Experience In Months or Years (optional)

Years Python programming experience 20

Years Programming experience overall 40

Have used another Python GUI Framework? (tkinter, Qt, etc) (yes/no is fine) yes


Troubleshooting

These items may solve your problem. Please check those you've done by changing - [ ] to - [X]

  • Searched main docs for your problem PySimpleGUI Documenation
  • Looked for Demo Programs that are similar to your goal. It is recommend you use the Demo Browser! Demo Programs
  • None of your GUI code was generated by an AI algorithm like GPT
  • If not tkinter - looked for Demo Programs for specific port
  • For non tkinter - Looked at readme for your specific port if not PySimpleGUI (Qt, WX, Remi)
  • Run your program outside of your debugger (from a command line)
  • Searched through Issues (open and closed) to see if already reported Issues.PySimpleGUI.com
  • Have upgraded to the latest release of PySimpleGUI on PyPI (lastest official version)
  • Tried running the Development Build. Your problem may have already been fixed but not released. Check Home Window for release notes and upgrading capability
  • For licensing questions please email [email protected]

Detailed Description

JUST A WHOLE LOT OF NOTHING returned on menu click. Sub-menu pops up and goes away just fine, but no event generated. Works OK on my Ubuntu desktop - just not here on my Pi4.

python
import PySimpleGUI as sg

layoutPRINT = [
    [sg.Button('Print your TAB',  disabled=False, key='-tab_print-')],
    [sg.Button('and Finalize it', disabled=False, key='-tab_erase-')],
]

menu_def=[['New User',['Register']]]

layout=[
    [sg.Menu(menu_def)],
    [sg.Frame("", layoutPRINT)],
]

window = sg.Window('menu-play', [layout], finalize=True, keep_on_top=True)

while True:

    event, values = window.read(timeout=100)

    if event != sg.TIMEOUT_EVENT:
        print(event)

    if event == sg.WIN_CLOSED:
        break

window.close()