Merge pull request #3278 from PySimpleGUI/Dev-latest

Dev latest
This commit is contained in:
PySimpleGUI 2020-08-12 11:02:37 -04:00 committed by GitHub
commit 65522ecc47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 9 deletions

View File

@ -2,8 +2,9 @@ import PySimpleGUI as sg
""" """
Demo showing how to remove the titlebar and replace with your own Demo showing how to remove the titlebar and replace with your own
Note that you cannot minimize these kinds of windows because they do not Unlike previous demos that lacked a titlebar, this one provides a way for you
have an icon representing them on the taskbar to "minimize" your window that does not have a titlebar. This is done by faking
the window using a hidden window that is minimized.
Copyright 2020 PySimpleGUI.org Copyright 2020 PySimpleGUI.org
""" """
@ -23,7 +24,7 @@ import PySimpleGUI as sg
# sg.theme_add_new('DarkGrey8', DarkGrey8) # sg.theme_add_new('DarkGrey8', DarkGrey8)
def dummy_window(): def dummy_minimized_window(title):
""" """
Creates an invisible window that is minimized to the taskbar Creates an invisible window that is minimized to the taskbar
As soon as something happens to the window, it is closed and the function As soon as something happens to the window, it is closed and the function
@ -31,14 +32,22 @@ def dummy_window():
The FocusIn event is set so that if the user restores the window from the taskbar, then the read 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 wille return, the window will be closed, and the function will return
""" """
layout = [[sg.T('You will not see this')]]
window = sg.Window('Window Title', layout, finalize=True, alpha_channel=0) 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.minimize()
window.bind('<FocusIn>', '-FOCUS-') window.bind('<FocusIn>', '-FOCUS-')
window.read(close=True) window.read(close=True)
def title_bar(title): def title_bar(title):
"""
Creates a "row" that can be added to a layout. This row looks like a titlebar
:param title: The "title" to show in the titlebar
:type title: str
:return: A list of elements (i.e. a "row" for a layout)
:type: List[sg.Element]
"""
bg = sg.theme_input_background_color() bg = sg.theme_input_background_color()
return [sg.Col([[sg.T(title, background_color=bg )]], pad=(0, 0), background_color=bg), return [sg.Col([[sg.T(title, background_color=bg )]], pad=(0, 0), background_color=bg),
@ -47,15 +56,18 @@ def title_bar(title):
def main(): def main():
sg.theme('DarkGrey8') sg.theme('DarkGrey8')
layout = [ title_bar('Window Title'),
title = 'Customized Titlebar Window'
layout = [ title_bar(title),
[sg.T('This is normal window text. The above is the fake "titlebar"')], [sg.T('This is normal window text. The above is the fake "titlebar"')],
[sg.T('Input something:')], [sg.T('Input something:')],
[sg.Input(key='-IN-'), sg.Text(size=(12,1), key='-OUT-')], [sg.Input(key='-IN-'), sg.Text(size=(12,1), key='-OUT-')],
[sg.Button('Go')] ] [sg.Button('Go')] ]
window = sg.Window('Window Title', layout, resizable=True, no_titlebar=True, grab_anywhere=True, keep_on_top=True, margins=(0,0), finalize=True) window = sg.Window(title, layout, resizable=True, no_titlebar=True, grab_anywhere=True, keep_on_top=True, margins=(0,0), finalize=True)
window['-C-'].expand(True, False, False) window['-C-'].expand(True, False, False) # expand the titlebar's rightmost column so that it resizes correctly
while True: # Event Loop while True: # Event Loop
event, values = window.read() event, values = window.read()
@ -64,11 +76,12 @@ def main():
break break
if event == '-MINIMIZE-': if event == '-MINIMIZE-':
window.hide() window.hide()
dummy_window() dummy_minimized_window(window.Title)
window.un_hide() window.un_hide()
if event == 'Go': if event == 'Go':
window['-OUT-'].update(values['-IN-']) window['-OUT-'].update(values['-IN-'])
window.close() window.close()
if __name__ == '__main__': if __name__ == '__main__':
main() main()