diff --git a/DemoPrograms/Demo_Titlebar_Custom_Dark_Theme.py b/DemoPrograms/Demo_Titlebar_Custom_Dark_Theme.py index c85e34c9..71700651 100644 --- a/DemoPrograms/Demo_Titlebar_Custom_Dark_Theme.py +++ b/DemoPrograms/Demo_Titlebar_Custom_Dark_Theme.py @@ -1,19 +1,14 @@ import PySimpleGUI as sg - """ Demo showing how to remove the titlebar and replace with your own Unlike previous demos that lacked a titlebar, this one provides a way for you to "minimize" your window that does not have a titlebar. This is done by faking the window using a hidden window that is minimized. - - While this demo uses the button colors for the titlebar color, you can use anything you want. - If possible it could be good to use combinations that are known to match like the input element colors - or the button colors. - - This code eventually grew into the internal implementation of the Titlebar element. It's a good example - of how user code is just as powerful as internal PySimpleGUI code. - - Copyright 2020 PySimpleGUI.org + + The DarkGrey8 is already a theme in PySimpleGUI. It's here to show you how to add your own and have it them + be used by your Custom Titlebar. + + Copyright 2020, 2022 PySimpleGUI.org """ @@ -32,55 +27,17 @@ sg.theme_add_new('DarkGrey8', DarkGrey8) sg.theme('DarkGrey8') -def dummy_minimized_window(title): - """ - Creates an invisible window that is minimized to the taskbar - As soon as something happens to the window, it is closed and the function - returns. - The FocusIn event is set so that if the user restores the window from the taskbar, then the read - wille return, the window will be closed, and the function will return - """ - - layout = [[sg.T('This is your window with a customized titlebar... you just cannot see it')]] - window = sg.Window(title, layout, finalize=True, alpha_channel=0) - window.minimize() - window.bind('', '-FOCUS-') - window.read(close=True) - - -def title_bar(title, text_color, background_color): - """ - Creates a Column element meant to be used as a single row. This row looks like a titlebar. - :param title: The "title" to show in the titlebar - :type title: str - :return: A single Column element that can be used as a single row in your layout - :type: sg.Column - """ - bc = background_color - tc = text_color - - return sg.Col([[sg.Col( - [[sg.T(title,text_color=tc, background_color=bc, grab=True, expand_x=True)]], - pad=(0, 0), background_color=bc, expand_x=True), - sg.Col( - [[sg.T('_', text_color=tc, background_color=bc, enable_events=True, key='-MINIMIZE-'),sg.Text('❎', text_color=tc, background_color=bc, enable_events=True, key='Exit')]], - element_justification='r', key='-C-', pad=(0, 0), expand_x=True, background_color=bc, grab=True)]], - pad=(0,0), grab=True, expand_x=True) - - def main(): # sg.theme('light green 3') # sg.theme('dark red') - sg.theme('DarkGrey8') title = 'Customized Titlebar Window' - # Here the titlebar colors are based on the theme. A few suggestions are shown. Try each of them - layout = [ [title_bar(title, sg.theme_button_color()[0], sg.theme_button_color()[1])], - # [title_bar(title, sg.theme_button_color()[1], sg.theme_slider_color())], - # [title_bar(title, sg.theme_slider_color(), sg.theme_button_color()[0])], - [sg.T('This is normal window text. The above is the fake "titlebar"')], + + layout = [ [sg.Titlebar(title, sg.CUSTOM_TITLEBAR_ICON)], + [sg.T('This is normal window text. The above is a "Custom Titlebar"')], + [sg.T('They can be made by adding a Titlebar element to your layout')], [sg.T('Input something:')], [sg.Input(key='-IN-'), sg.Text(size=(12,1), key='-OUT-')], [sg.Button('Go')]] @@ -92,10 +49,6 @@ def main(): print(event, values) if event == sg.WIN_CLOSED or event == 'Exit': break - if event == '-MINIMIZE-': - window.hide() - dummy_minimized_window(window.Title) - window.un_hide() if event == 'Go': window['-OUT-'].update(values['-IN-']) window.close() diff --git a/images/for_docs/CustomTitlebar0.jpg b/images/for_docs/CustomTitlebar0.jpg new file mode 100644 index 00000000..35dbeb73 Binary files /dev/null and b/images/for_docs/CustomTitlebar0.jpg differ diff --git a/images/for_docs/CustomTitlebar1.jpg b/images/for_docs/CustomTitlebar1.jpg new file mode 100644 index 00000000..294aea51 Binary files /dev/null and b/images/for_docs/CustomTitlebar1.jpg differ diff --git a/images/for_docs/CustomTitlebar2.jpg b/images/for_docs/CustomTitlebar2.jpg new file mode 100644 index 00000000..a0be1f5a Binary files /dev/null and b/images/for_docs/CustomTitlebar2.jpg differ diff --git a/images/for_docs/CustomTitlebar3.jpg b/images/for_docs/CustomTitlebar3.jpg new file mode 100644 index 00000000..3bdc03f1 Binary files /dev/null and b/images/for_docs/CustomTitlebar3.jpg differ