Expanded class wrapper demo to explain it's not a recommended design pattern. When initially released there was no explanation accompanying the code.
This commit is contained in:
parent
955a7cba07
commit
b62648aa23
|
@ -5,9 +5,37 @@ import PySimpleGUI as sg
|
|||
|
||||
Using a class to encapsulate PySimpleGUI Window creation & event loop
|
||||
|
||||
Copyright 2022 PySimpleGUI
|
||||
This is NOT a recommended design pattern. It mimics the object oriented design that many OO-based
|
||||
GUI frameworks use, but there is no advantage to structuring you code in his manner. It adds
|
||||
confusion, not clarity.
|
||||
|
||||
The class version is 18 lines of code. The plain version is 11 lines of code.
|
||||
|
||||
Two things about the class wrapper jump out as adding confusion:
|
||||
1. Unneccessary fragmentation of the event loop - the button click code is pulled out of the loop entirely
|
||||
2. "self" clutters the code without adding value
|
||||
|
||||
|
||||
Copyright 2022, 2023 PySimpleGUI
|
||||
"""
|
||||
|
||||
'''
|
||||
MM'""""'YMM dP
|
||||
M' .mmm. `M 88
|
||||
M MMMMMooM 88 .d8888b. .d8888b. .d8888b.
|
||||
M MMMMMMMM 88 88' `88 Y8ooooo. Y8ooooo.
|
||||
M. `MMM' .M 88 88. .88 88 88
|
||||
MM. .dM dP `88888P8 `88888P' `88888P'
|
||||
MMMMMMMMMMM
|
||||
|
||||
M""MMMMM""M oo
|
||||
M MMMMM M
|
||||
M MMMMP M .d8888b. 88d888b. .d8888b. dP .d8888b. 88d888b.
|
||||
M MMMM' .M 88ooood8 88' `88 Y8ooooo. 88 88' `88 88' `88
|
||||
M MMP' .MM 88. ... 88 88 88 88. .88 88 88
|
||||
M .dMMM `88888P' dP `88888P' dP `88888P' dP dP
|
||||
MMMMMMMMMMM
|
||||
'''
|
||||
class SampleGUI():
|
||||
|
||||
def __init__(self):
|
||||
|
@ -35,3 +63,39 @@ class SampleGUI():
|
|||
my_gui = SampleGUI()
|
||||
# run the event loop
|
||||
my_gui.run()
|
||||
|
||||
|
||||
'''
|
||||
M"""""""`YM dP
|
||||
M mmmm. M 88
|
||||
M MMMMM M .d8888b. 88d888b. 88d8b.d8b. .d8888b. 88
|
||||
M MMMMM M 88' `88 88' `88 88'`88'`88 88' `88 88
|
||||
M MMMMM M 88. .88 88 88 88 88 88. .88 88
|
||||
M MMMMM M `88888P' dP dP dP dP `88888P8 dP
|
||||
MMMMMMMMMMM
|
||||
|
||||
M""MMMMM""M oo
|
||||
M MMMMM M
|
||||
M MMMMP M .d8888b. 88d888b. .d8888b. dP .d8888b. 88d888b.
|
||||
M MMMM' .M 88ooood8 88' `88 Y8ooooo. 88 88' `88 88' `88
|
||||
M MMP' .MM 88. ... 88 88 88 88. .88 88 88
|
||||
M .dMMM `88888P' dP `88888P' dP `88888P' dP dP
|
||||
MMMMMMMMMMM
|
||||
'''
|
||||
|
||||
layout = [ [sg.Text('My layout')],
|
||||
[sg.Input(key='-IN-')],
|
||||
[sg.Button('Go'), sg.Button('Exit')] ]
|
||||
|
||||
window = sg.Window('My new window', layout)
|
||||
|
||||
while True: # Event Loop
|
||||
event, values = window.read()
|
||||
if event in (sg.WIN_CLOSED, 'Exit'):
|
||||
break
|
||||
|
||||
if event == 'Go':
|
||||
sg.popup('Go button clicked', 'Input value:', values['-IN-'])
|
||||
|
||||
window.close()
|
||||
|
||||
|
|
Loading…
Reference in New Issue