Pygame menu - 3.4.0
Menu for pygame, simple, lightweight and easy to use
Python library that can create a simple menu for pygame application: - Scroll support - Widgets: buttons, images, text input, selectors - Multiple themes - Sound support
This version introduces a lot of changes from v3.3.2: Error fixes: Fixed widget resizing #232. (@arpruss) Fixed column calculation #233. (@arpruss) Fixed menu centering if the vertical widget offset is not zero, closes #230. Fixed submenu recursion while adding buttons to Menu #241. Fixed callable assertion. Fix scroll area surface size computation with different thickness scrollbars. Fixed edge cases in Menu get_selected_widget() method. Fixed draw exceptions in LeftArrowSelection and RightArrowSelection. Fixed exception while retrieving height of widget selection If it is None. Fixed submenu race if Menu is removed from button while using update_callback Button widget method. Fixed MenuBar widget back box status on certain conditions. Fixed widget selection in different edge cases (visibility, removal, unselectable). Fixed widget _font_render_string method if the font was not defined. New methods: Added widget padding, closes #229. New widget methods hide() and show #237. Image widget now can be created directly from a BaseImage object. BaseImage new param load_from_file. BaseImage new methods copy(), apply_image_function(func), to_bw() and pick_channels(channels). BaseImage transforms methods now returns the object reference for nested calls. Added scrollarea_outer_margin to themes. Added back_count to add_button Menu method. Added margin_id parameter in add_vertical_margin Menu method. Now VMargin accepts ID. New Menu method add_generic_widget for adding generic widgets to the menu. Widget attributes now accepts margin as a list. New Menu method select_widget(widget) that sets widget as selected. New Menu method get_widgets() which returns the widgets as a tuple. New Menu method in_submenu(menu) for detecting submenus. New Widget method change_id(id). New Widget method update_font(style) for changing the style using previous styles. New Image widget methods get_image() and set_image(image). Other changes: Added support for pygame v1.9.3. (@arpruss) Added example with OOP style, closes #228. Improve widget access, closes #237. Improve documentation, module testing, and several typos. Added font cache for performance improvement. Improve menu centering in different circumstances. Widgets return True if render changed. Changes that may break compatibility: Fixed Selector value in get_value() method. Now the entire tuple is returned instead of  item ff217d7. Removed onchange parameter of Button widget. Removed onchange parameter of ScrollBar widget. Menu _check_id_duplicated method now returns IndexError instead of ValueError. Menu get_selected_widget() method not returns None is no widget is selected instead of a ValueError exception. THEME_GREEN scrollbar thickness was established to 20px (previous were 14px). Adding recursive Menus now throws a ValueError exception. Widget get_selection_effect now returns a _NullSelection object instead of None if it is not stablished.
Pygame.org account Comments
Marcus Bell 2017-12-01 00:43Looks good. I can't figure out how to close the menu though. (Only esc key works for this, but I want to use another key)
Ales 2018-02-02 12:10Perfect job! One question: when rise menu.enable() for main menu is not impacted required aplha %. Every time is menu apear with 100% opaque. When I use only draw method it's transparent, but menu is not functional (do not catch events, when is disable problably). Please advice - How can I run single transparent menu started from my python code. example.py starting transparent from main menu and this working. thanx Ales
Pablo Pizarro 2020-05-03 21:22New version 3, added multiple widgets, image support, scrolling, new doc website https://pygame-menu.readthedocs.io
Slava 2020-10-26 20:02Thank you for your work!