Skip to content

Suggestion for the theme_previewer to return the selected theme #20

Closed
@RoboPickle

Description

@RoboPickle

theme_previewer

It would be useful if the theme_previewer could take a more active part in the selection of the themes.

Current behaviour

Currently the theme_previewer provides a static example of all the themes. The caller needs to also then provide a mechanism to handle the selection of the theme, such as a scrollable list.

Recommendation

The theme_previewer function is updated so that the individual example frames “Ok” buttons can return the name of the theme.

Resolution

I will be creating a pull request with a solution for this.

Example usage

The following example code can demonstrate how it would be used.

import FreeSimpleGUI as sg
from FreeSimpleGUI import Text, Button, InputText, Slider, Window


def get_layout():
    return [
        [Text(f'Current Theme: {current_theme}', size=(40,1))],
        [Text('Example Text'), InputText('Input data here', size=(10, 1), expand_x=True)],
        [Button('Ok'), Button('Disabled', disabled=True),],
        [Slider((1, 100), orientation='h', size=(5, 15), expand_x=True)],
        [Button('Preview Themes', key="Preview"), Button('Quit'),],
    ]

def rebuild_window(win:Window = None):
    if win:
        win.close()
        
    return Window(
        'Preview of Themes',
        get_layout(),
        resizable=True,
        finalize=True,
    )

current_theme = sg.theme()
window = rebuild_window()    
event, values = window.read()
while event == "Preview":
    new_theme = sg.preview_all_look_and_feel_themes(scrollable=True,columns=8)
    if new_theme not in (None, current_theme):
        current_theme = new_theme
        sg.theme(new_theme)
        window = rebuild_window(window)
    event, values = window.read()

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions