New Demo Program - shows using objects instead of strings with Listbox

This commit is contained in:
PySimpleGUI 2022-11-03 08:12:20 -04:00
parent 1f6a96cf99
commit 0178e9b14f
1 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,43 @@
import PySimpleGUI as sg
"""
Demo - Listbox Using Objects
Several elements can take not just strings, but objects. The Listsbox is one of them.
This demo show how you can use objects directly in a Listbox in a way that you can access
information about each object that is different than what is shown in the Window.
The important part of this design pattern is the use of the __str__ method in your item objects.
This method is what determines what is shown in the window.
Copyright 2022 PySimpleGUI
"""
class Item():
def __init__(self, internal, shown):
self.internal = internal
self.shown = shown
def __str__(self):
return self.shown
# make list of some objects
my_item_list = [Item(f'Internal {i}', f'shown {i}') for i in range(100)]
layout = [ [sg.Text('Select 1 or more items and click "Go"')],
[sg.Listbox(my_item_list, key='-LB-', s=(20,20), select_mode=sg.LISTBOX_SELECT_MODE_EXTENDED)],
[sg.Output(s=(40,10))],
[sg.Button('Go'), sg.Button('Exit')] ]
window = sg.Window('Listbox Using Objects', layout)
while True:
event, values = window.read()
# print(event, values)
if event == sg.WIN_CLOSED or event == 'Exit':
break
elif event == 'Go':
print('You selected:')
for item in values['-LB-']:
print(item.internal)
window.close()