Fixed Bug introduced when adding calendar. Was creating additional return values! UGH.

This commit is contained in:
MikeTheWatchGuy 2018-09-05 10:29:36 -04:00
parent d069cad782
commit 1eeada1d54
2 changed files with 23 additions and 54 deletions

View File

@ -103,15 +103,10 @@ def AllWidgetsWithContext():
""" """
import PySimpleGUI as sg import PySimpleGUI as sg
# Green & tan color scheme # Green & tan color scheme
sg.SetOptions(background_color='#9FB8AD', sg.ChangeLookAndFeel('GreenTan')
text_element_background_color='#9FB8AD',
element_background_color='#9FB8AD',
input_elements_background_color='#F7F3EC', # sg.ChangeLookAndFeel('GreenTan')
button_color=('white', '#475841'),
border_width=0,
slider_border_width=0,
progress_meter_border_depth=0,
scrollbar_color='#F7F3EC')
with sg.FlexForm('Everything bagel', default_element_size=(40, 1)) as form: with sg.FlexForm('Everything bagel', default_element_size=(40, 1)) as form:
layout = [ layout = [
@ -143,15 +138,7 @@ def AllWidgetsNoContext():
import PySimpleGUI as sg import PySimpleGUI as sg
# Green & tan color scheme # Green & tan color scheme
sg.SetOptions(background_color='#9FB8AD', sg.ChangeLookAndFeel('GreenTan')
text_element_background_color='#9FB8AD',
element_background_color='#9FB8AD',
input_elements_background_color='#F7F3EC',
button_color=('white', '#475841'),
border_width=0,
slider_border_width=0,
progress_meter_border_depth=0,
scrollbar_color='#F7F3EC')
form = sg.FlexForm('Everything bagel', default_element_size=(40, 1)) form = sg.FlexForm('Everything bagel', default_element_size=(40, 1))
layout = [ layout = [
@ -791,7 +778,7 @@ while True:
form.FindElement('multi').Update(inspect.getsource(func)) form.FindElement('multi').Update(inspect.getsource(func))
button, values = form.Read() button, values = form.Read()
elif button is 'Run': elif button is 'Run':
sg.ChangeLookAndFeel('SystemDefault') # sg.ChangeLookAndFeel('SystemDefault')
func() func()
break break
else: else:

View File

@ -770,7 +770,7 @@ class Output(Element):
# Button Class # # Button Class #
# ---------------------------------------------------------------------- # # ---------------------------------------------------------------------- #
class Button(Element): class Button(Element):
def __init__(self, button_type=BUTTON_TYPE_CLOSES_WIN, target=(None, None), button_text='', file_types=(("ALL Files", "*.*"),), image_filename=None, image_size=(None, None), image_subsample=None, border_width=None, scale=(None, None), size=(None, None), auto_size_button=None, button_color=None, font=None, bind_return_key=False, focus=False, pad=None, key=None): def __init__(self, button_type=BUTTON_TYPE_CLOSES_WIN, target=(None, None), button_text='', file_types=(("ALL Files", "*.*"),), image_filename=None, image_size=(None, None), image_subsample=None, border_width=None, scale=(None, None), size=(None, None), auto_size_button=None, button_color=None, default_value = None, font=None, bind_return_key=False, focus=False, pad=None, key=None):
''' '''
Button Element - Specifies all types of buttons Button Element - Specifies all types of buttons
:param button_type: :param button_type:
@ -802,6 +802,7 @@ class Button(Element):
self.BindReturnKey = bind_return_key self.BindReturnKey = bind_return_key
self.Focus = focus self.Focus = focus
self.TKCal = None self.TKCal = None
self.DefaultValue = None
super().__init__(ELEM_TYPE_BUTTON, scale=scale, size=size, font=font, pad=pad, key=key) super().__init__(ELEM_TYPE_BUTTON, scale=scale, size=size, font=font, pad=pad, key=key)
return return
@ -892,7 +893,7 @@ class Button(Element):
return return
def Update(self, new_text=None, button_color=(None, None)): def Update(self, value=None, new_text=None, button_color=(None, None)):
try: try:
if new_text is not None: if new_text is not None:
self.TKButton.configure(text=new_text) self.TKButton.configure(text=new_text)
@ -900,6 +901,7 @@ class Button(Element):
self.TKButton.config(foreground=button_color[0], background=button_color[1]) self.TKButton.config(foreground=button_color[0], background=button_color[1])
except: except:
return return
self.DefaultValue = value
def __del__(self): def __del__(self):
try: try:
@ -1193,6 +1195,9 @@ class Column(Element):
# ---------------------------------------------------------------------- # # ---------------------------------------------------------------------- #
class TKCalendar(ttk.Frame): class TKCalendar(ttk.Frame):
"""
This code was shamelessly lifted from moshekaplan's repository - moshekaplan/tkinter_components
"""
# XXX ToDo: cget and configure # XXX ToDo: cget and configure
datetime = calendar.datetime.datetime datetime = calendar.datetime.datetime
@ -1393,37 +1398,6 @@ class TKCalendar(ttk.Frame):
year, month = self._date.year, self._date.month year, month = self._date.year, self._date.month
return self.datetime(year, month, int(self._selection[0])) return self.datetime(year, month, int(self._selection[0]))
class Calendar(Element):
def __init__(self, scale=(None, None), size=(None, None), pad=None, key=None):
'''
Image Element
:param filename:
:param scale: Adds multiplier to size (w,h)
:param size: Size of field in characters
'''
self.tkCalendar = None
if data is None and filename is None:
print('* Warning... no image specified in Image Element! *')
super().__init__(ELEM_TYPE_IMAGE, scale=scale, size=size, pad=pad, key=key)
return
def Update(self, filename=None, data=None):
if filename is not None:
image = tk.PhotoImage(file=filename)
elif data is not None:
if type(data) is bytes:
image = tk.PhotoImage(data=data)
else:
image = data
else: return
width, height = image.width(), image.height()
self.tktext_label.configure(image=image, width=width, height=height)
self.tktext_label.image = image
def __del__(self):
super().__del__()
@ -1984,7 +1958,14 @@ def BuildResultsForSubform(form, initialize_only, top_level_form):
value = None value = None
# if an input type element, update the results # if an input type element, update the results
if (element.Type == ELEM_TYPE_BUTTON and element.BType == BUTTON_TYPE_CALENDAR_CHOOSER) or element.Type != ELEM_TYPE_TEXT and element.Type != ELEM_TYPE_IMAGE and element.Type != ELEM_TYPE_OUTPUT and element.Type != ELEM_TYPE_PROGRESS_BAR and element.Type!= ELEM_TYPE_COLUMN: if element.Type != ELEM_TYPE_BUTTON and element.Type != ELEM_TYPE_TEXT and element.Type != ELEM_TYPE_IMAGE and\
element.Type != ELEM_TYPE_OUTPUT and element.Type != ELEM_TYPE_PROGRESS_BAR and \
element.Type!= ELEM_TYPE_COLUMN:
AddToReturnList(form, value)
AddToReturnDictionary(top_level_form, element, value)
elif (element.Type == ELEM_TYPE_BUTTON and element.BType == BUTTON_TYPE_CALENDAR_CHOOSER) or \
(element.Type == ELEM_TYPE_BUTTON and element.Target == (None,None) and \
(element.BType in (BUTTON_TYPE_SAVEAS_FILE, BUTTON_TYPE_BROWSE_FILE, BUTTON_TYPE_BROWSE_FILES, BUTTON_TYPE_BROWSE_FOLDER))):
AddToReturnList(form, value) AddToReturnList(form, value)
AddToReturnDictionary(top_level_form, element, value) AddToReturnDictionary(top_level_form, element, value)
@ -2037,7 +2018,8 @@ def FillSubformWithValues(form, values_dict):
element.Update(value) element.Update(value)
elif element.Type == ELEM_TYPE_INPUT_SPIN: elif element.Type == ELEM_TYPE_INPUT_SPIN:
element.Update(value) element.Update(value)
elif element.Type == ELEM_TYPE_BUTTON:
element.Update(value)
def _FindElementFromKeyInSubForm(form, key): def _FindElementFromKeyInSubForm(form, key):
for row_num, row in enumerate(form.Rows): for row_num, row in enumerate(form.Rows):