As barny suggested, PySimpleGUI is about as easy as it gets.
What you've described is what's called a one-shot window in the PySimpleGUI Cookbook.
These types of GUIs can be written as a single line of PySimpleGUI code because you don't need a full event loop.
import PySimpleGUI as sg
event, values = sg.Window('Choose an option', [[sg.Text('Select one->'), sg.Listbox(['Option a', 'Option b', 'Option c'], size=(20, 3), key='LB')],
[sg.Button('Ok'), sg.Button('Cancel')]]).read(close=True)
if event == 'Ok':
sg.popup(f'You chose {values["LB"][0]}')
else:
sg.popup_cancel('User aborted')
After the call to Window, with the chained read call, you're provided the event used to close the window (which button or if closed with the "X") and the dictionary of values. In this case, your values dictionary will have a single item values['LB']. For Listboxes, this value will be a list. To get the item chosen, you could reference values['LB'][0]