NEW Fill Form feature! More Popup functions, Update methods added for all elements that did not have previously
This commit is contained in:
		
							parent
							
								
									f8aff92c98
								
							
						
					
					
						commit
						83d62d2555
					
				
					 2 changed files with 149 additions and 27 deletions
				
			
		
							
								
								
									
										52
									
								
								Demo_Fill_Form.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Demo_Fill_Form.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | ||||||
|  | import PySimpleGUI as sg | ||||||
|  | 
 | ||||||
|  | """ | ||||||
|  | Show a complex form, save the initial values | ||||||
|  | When the "Fill" button is clicked, the form will reset to the initial values | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | def Everything(): | ||||||
|  |     sg.ChangeLookAndFeel('Green') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     column1 = [[sg.Text('Column 1', background_color='#d3dfda', justification='center', size=(10, 1))], | ||||||
|  |                [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 1')], | ||||||
|  |                [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 2')], | ||||||
|  |                [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 3')]] | ||||||
|  | 
 | ||||||
|  |     layout = [ | ||||||
|  |         [sg.Text('All graphic widgets in one form!', size=(30, 1), font=("Helvetica", 25))], | ||||||
|  |         [sg.Text('Here is some text.... and a place to enter text')], | ||||||
|  |         [sg.InputText('This is my text')], | ||||||
|  |         [sg.Checkbox('Checkbox'),  sg.Checkbox('My second checkbox!', default=True)], | ||||||
|  |         [sg.Radio('My first Radio!     ', "RADIO1", default=True), sg.Radio('My second Radio!', "RADIO1")], | ||||||
|  |         [sg.Multiline(default_text='This is the default Text should you decide not to type anything', size=(35, 3)), | ||||||
|  |          sg.Multiline(default_text='A second multi-line', size=(35, 3))], | ||||||
|  |         [sg.InputCombo(('Combobox 1', 'Combobox 2'), size=(20, 1)), | ||||||
|  |          sg.Slider(range=(1, 100), orientation='h', size=(34, 20), default_value=85)], | ||||||
|  |         [sg.InputOptionMenu(('Menu Option 1', 'Menu Option 2', 'Menu Option 3'))], | ||||||
|  |         [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(30, 3)), | ||||||
|  |          sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=25), | ||||||
|  |          sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=75), | ||||||
|  |          sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=10, key='slider'), | ||||||
|  |          sg.Column(column1, background_color='#d3dfda')], | ||||||
|  |         [sg.Text('_' * 80)], | ||||||
|  |         [sg.Text('Choose A Folder', size=(35, 1))], | ||||||
|  |         [sg.Text('Your Folder', size=(15, 1), auto_size_text=False, justification='right'), | ||||||
|  |          sg.InputText('Default Folder'), sg.FolderBrowse()], | ||||||
|  |         [sg.ReadFormButton('Fill'), sg.Cancel()] | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     form = sg.FlexForm('Form Fill Demonstration', default_element_size=(40, 1)) | ||||||
|  |     form.Layout(layout) | ||||||
|  |     button, initial_values = form.ReadNonBlocking() | ||||||
|  | 
 | ||||||
|  |     while True: | ||||||
|  |         button, values = form.Read() | ||||||
|  |         if button in (None, 'Cancel'): | ||||||
|  |             break | ||||||
|  |         form.Fill(initial_values)           # fill form with whatever initial values were | ||||||
|  | 
 | ||||||
|  |     sg.Popup('Title', 'The results of the form.', 'The button clicked was "{}"'.format(button), 'The values are', values) | ||||||
|  | 
 | ||||||
|  | Everything() | ||||||
							
								
								
									
										124
									
								
								PySimpleGUI.py
									
										
									
									
									
								
							
							
						
						
									
										124
									
								
								PySimpleGUI.py
									
										
									
									
									
								
							|  | @ -302,6 +302,13 @@ class InputCombo(Element): | ||||||
| 
 | 
 | ||||||
|         super().__init__(ELEM_TYPE_INPUT_COMBO, scale=scale, size=size, auto_size_text=auto_size_text, background_color=bg, text_color=fg, key=key, pad=pad) |         super().__init__(ELEM_TYPE_INPUT_COMBO, scale=scale, size=size, auto_size_text=auto_size_text, background_color=bg, text_color=fg, key=key, pad=pad) | ||||||
| 
 | 
 | ||||||
|  |     def Update(self, value): | ||||||
|  |         for index, v in enumerate(self.Values): | ||||||
|  |             if v == value: | ||||||
|  |                 self.TKCombo.current(index) | ||||||
|  |                 break | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     def __del__(self): |     def __del__(self): | ||||||
|         try: |         try: | ||||||
|             self.TKComboBox.__del__() |             self.TKComboBox.__del__() | ||||||
|  | @ -331,6 +338,13 @@ class InputOptionMenu(Element): | ||||||
| 
 | 
 | ||||||
|         super().__init__(ELEM_TYPE_INPUT_OPTION_MENU, scale=scale, size=size, auto_size_text=auto_size_text, background_color=bg, text_color=fg, key=key, pad=pad) |         super().__init__(ELEM_TYPE_INPUT_OPTION_MENU, scale=scale, size=size, auto_size_text=auto_size_text, background_color=bg, text_color=fg, key=key, pad=pad) | ||||||
| 
 | 
 | ||||||
|  |     def Update(self, value): | ||||||
|  |         for index, v in enumerate(self.Values): | ||||||
|  |             if v == value: | ||||||
|  |                 self.TKStringVar.set(value) | ||||||
|  |                 break | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     def __del__(self): |     def __del__(self): | ||||||
|         try: |         try: | ||||||
|             self.TKOptionMenu.__del__() |             self.TKOptionMenu.__del__() | ||||||
|  | @ -376,6 +390,13 @@ class Listbox(Element): | ||||||
|             self.TKListbox.insert(tk.END, item) |             self.TKListbox.insert(tk.END, item) | ||||||
|         self.TKListbox.selection_set(0, 0) |         self.TKListbox.selection_set(0, 0) | ||||||
| 
 | 
 | ||||||
|  |     def SetValue(self, value): | ||||||
|  |         for index, item in enumerate(self.Values): | ||||||
|  |             if item in value: | ||||||
|  |                 self.TKListbox.selection_set(index) | ||||||
|  |             else: | ||||||
|  |                 self.TKListbox.selection_clear(index) | ||||||
|  | 
 | ||||||
|     def __del__(self): |     def __del__(self): | ||||||
|         try: |         try: | ||||||
|             self.TKListBox.__del__() |             self.TKListBox.__del__() | ||||||
|  | @ -410,6 +431,12 @@ class Radio(Element): | ||||||
| 
 | 
 | ||||||
|         super().__init__(ELEM_TYPE_INPUT_RADIO, scale=scale , size=size, auto_size_text=auto_size_text, font=font, background_color=background_color, text_color=self.TextColor, key=key, pad=pad) |         super().__init__(ELEM_TYPE_INPUT_RADIO, scale=scale , size=size, auto_size_text=auto_size_text, font=font, background_color=background_color, text_color=self.TextColor, key=key, pad=pad) | ||||||
| 
 | 
 | ||||||
|  |     def Update(self, value): | ||||||
|  |         if not value: | ||||||
|  |             return | ||||||
|  |         location = EncodeRadioRowCol(self.Position[0], self.Position[1]) | ||||||
|  |         self.TKIntVar.set(location) | ||||||
|  | 
 | ||||||
|     def __del__(self): |     def __del__(self): | ||||||
|         try: |         try: | ||||||
|             self.TKRadio.__del__() |             self.TKRadio.__del__() | ||||||
|  | @ -1256,6 +1283,9 @@ class FlexForm: | ||||||
|             pass |             pass | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |     def Fill(self, values_dict): | ||||||
|  |         FillFormWithValues(self, values_dict) | ||||||
|  | 
 | ||||||
|     def GetScreenDimensions(self): |     def GetScreenDimensions(self): | ||||||
|         if self.TKrootDestroyed: |         if self.TKrootDestroyed: | ||||||
|             return None, None |             return None, None | ||||||
|  | @ -1487,6 +1517,7 @@ def DummyButton(button_text, image_filename=None, image_size=(None, None),image_ | ||||||
| def AddToReturnDictionary(form, element, value): | def AddToReturnDictionary(form, element, value): | ||||||
|     if element.Key is None: |     if element.Key is None: | ||||||
|         form.ReturnValuesDictionary[form.DictionaryKeyCounter] = value |         form.ReturnValuesDictionary[form.DictionaryKeyCounter] = value | ||||||
|  |         element.Key = form.DictionaryKeyCounter | ||||||
|         form.DictionaryKeyCounter += 1 |         form.DictionaryKeyCounter += 1 | ||||||
|     else: |     else: | ||||||
|         form.ReturnValuesDictionary[element.Key] = value |         form.ReturnValuesDictionary[element.Key] = value | ||||||
|  | @ -1619,6 +1650,38 @@ def BuildResultsForSubform(form, initialize_only, top_level_form): | ||||||
| 
 | 
 | ||||||
|     return form.ReturnValues |     return form.ReturnValues | ||||||
| 
 | 
 | ||||||
|  | def FillFormWithValues(form, values_dict): | ||||||
|  |     FillSubformWithValues(form, values_dict) | ||||||
|  | 
 | ||||||
|  | def FillSubformWithValues(form, values_dict): | ||||||
|  |     for row_num,row in enumerate(form.Rows): | ||||||
|  |         for col_num, element in enumerate(row): | ||||||
|  |             value = None | ||||||
|  |             if element.Type == ELEM_TYPE_COLUMN: | ||||||
|  |                 FillSubformWithValues(element, values_dict) | ||||||
|  |             try: | ||||||
|  |                 value = values_dict[element.Key] | ||||||
|  |             except: | ||||||
|  |                 continue | ||||||
|  | 
 | ||||||
|  |             if element.Type == ELEM_TYPE_INPUT_TEXT: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_CHECKBOX: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_RADIO: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_COMBO: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_OPTION_MENU: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_LISTBOX: | ||||||
|  |                 element.SetValue(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_SLIDER: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_MULTILINE: | ||||||
|  |                 element.Update(value) | ||||||
|  |             elif element.Type == ELEM_TYPE_INPUT_SPIN: | ||||||
|  |                 element.Update(value) | ||||||
| 
 | 
 | ||||||
| # ------------------------------------------------------------------------------------------------------------------ # | # ------------------------------------------------------------------------------------------------------------------ # | ||||||
| # =====================================   TK CODE STARTS HERE ====================================================== # | # =====================================   TK CODE STARTS HERE ====================================================== # | ||||||
|  | @ -2279,8 +2342,7 @@ def MsgBoxAutoClose(*args, button_color=None, auto_close=True, auto_close_durati | ||||||
|     :param font: |     :param font: | ||||||
|     :return: |     :return: | ||||||
|     ''' |     ''' | ||||||
|     MsgBox(*args, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) |     return MsgBox(*args, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) | ||||||
|     return |  | ||||||
| 
 | 
 | ||||||
| PopupTimed = MsgBoxAutoClose | PopupTimed = MsgBoxAutoClose | ||||||
| PopupAutoClose = MsgBoxAutoClose | PopupAutoClose = MsgBoxAutoClose | ||||||
|  | @ -2298,8 +2360,8 @@ def MsgBoxError(*args, button_color=DEFAULT_ERROR_BUTTON_COLOR, auto_close=False | ||||||
|     :param font: |     :param font: | ||||||
|     :return: |     :return: | ||||||
|     ''' |     ''' | ||||||
|     MsgBox(*args, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) |     return MsgBox(*args, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) | ||||||
|     return | 
 | ||||||
| 
 | 
 | ||||||
| PopupError = MsgBoxError | PopupError = MsgBoxError | ||||||
| 
 | 
 | ||||||
|  | @ -2317,8 +2379,7 @@ def MsgBoxCancel(*args, button_color=None, auto_close=False, auto_close_duration | ||||||
|     :param font: |     :param font: | ||||||
|     :return: |     :return: | ||||||
|     ''' |     ''' | ||||||
|     MsgBox(*args, button_type=MSG_BOX_CANCELLED, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) |     return MsgBox(*args, button_type=MSG_BOX_CANCELLED, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) | ||||||
|     return |  | ||||||
| 
 | 
 | ||||||
| PopupCancel = MsgBoxCancel | PopupCancel = MsgBoxCancel | ||||||
| 
 | 
 | ||||||
|  | @ -2336,8 +2397,7 @@ def MsgBoxOK(*args, button_color=None, auto_close=False, auto_close_duration=Non | ||||||
|     :param font: |     :param font: | ||||||
|     :return: |     :return: | ||||||
|     ''' |     ''' | ||||||
|     MsgBox(*args, button_type=MSG_BOX_OK, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) |     return MsgBox(*args, button_type=MSG_BOX_OK, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) | ||||||
|     return |  | ||||||
| 
 | 
 | ||||||
| PopupOk = MsgBoxOK | PopupOk = MsgBoxOK | ||||||
| 
 | 
 | ||||||
|  | @ -2355,8 +2415,7 @@ def MsgBoxOKCancel(*args, button_color=None, auto_close=False, auto_close_durati | ||||||
|     :param font: |     :param font: | ||||||
|     :return: |     :return: | ||||||
|     ''' |     ''' | ||||||
|     result = MsgBox(*args, button_type=MSG_BOX_OK_CANCEL, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) |     return MsgBox(*args, button_type=MSG_BOX_OK_CANCEL, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration, font=font) | ||||||
|     return result |  | ||||||
| 
 | 
 | ||||||
| PopupOkCancel = MsgBoxOKCancel | PopupOkCancel = MsgBoxOKCancel | ||||||
| 
 | 
 | ||||||
|  | @ -2670,8 +2729,10 @@ def EasyPrintClose(): | ||||||
| 
 | 
 | ||||||
| # ========================  Scrolled Text Box   =====# | # ========================  Scrolled Text Box   =====# | ||||||
| # ===================================================# | # ===================================================# | ||||||
| def ScrolledTextBox(*args, button_color=None, yes_no=False, auto_close=False, auto_close_duration=None, height=None): | def ScrolledTextBox(*args, button_color=None, yes_no=False, auto_close=False, auto_close_duration=None, size=(None, None)): | ||||||
|     if not args: return |     if not args: return | ||||||
|  |     width, height = size | ||||||
|  |     width = width if width else MESSAGE_BOX_LINE_WIDTH | ||||||
|     with FlexForm(args[0], auto_size_text=True, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration) as form: |     with FlexForm(args[0], auto_size_text=True, button_color=button_color, auto_close=auto_close, auto_close_duration=auto_close_duration) as form: | ||||||
|         max_line_total, max_line_width, total_lines, height_computed = 0,0,0,0 |         max_line_total, max_line_width, total_lines, height_computed = 0,0,0,0 | ||||||
|         complete_output = '' |         complete_output = '' | ||||||
|  | @ -2680,9 +2741,9 @@ def ScrolledTextBox(*args, button_color=None, yes_no=False, auto_close=False, au | ||||||
|             # if not isinstance(message, str): message = str(message) |             # if not isinstance(message, str): message = str(message) | ||||||
|             message = str(message) |             message = str(message) | ||||||
|             longest_line_len = max([len(l) for l in message.split('\n')]) |             longest_line_len = max([len(l) for l in message.split('\n')]) | ||||||
|             width_used = min(longest_line_len, MESSAGE_BOX_LINE_WIDTH) |             width_used = min(longest_line_len, width) | ||||||
|             max_line_total = max(max_line_total, width_used) |             max_line_total = max(max_line_total, width_used) | ||||||
|             max_line_width = MESSAGE_BOX_LINE_WIDTH |             max_line_width = width | ||||||
|             lines_needed = _GetNumLinesNeeded(message, width_used) |             lines_needed = _GetNumLinesNeeded(message, width_used) | ||||||
|             height_computed += lines_needed |             height_computed += lines_needed | ||||||
|             complete_output += message + '\n' |             complete_output += message + '\n' | ||||||
|  | @ -2695,13 +2756,16 @@ def ScrolledTextBox(*args, button_color=None, yes_no=False, auto_close=False, au | ||||||
|         # show either an OK or Yes/No depending on paramater |         # show either an OK or Yes/No depending on paramater | ||||||
|         if yes_no: |         if yes_no: | ||||||
|             form.AddRow(Text('', size=(pad, 1), auto_size_text=False), Yes(), No()) |             form.AddRow(Text('', size=(pad, 1), auto_size_text=False), Yes(), No()) | ||||||
|             (button_text, values) = form.Show() |             button, values = form.Read() | ||||||
|             return button_text == 'Yes' |             return button | ||||||
|         else: |         else: | ||||||
|             form.AddRow(Text('', size=(pad, 1), auto_size_text=False), SimpleButton('OK', size=(5, 1), button_color=button_color)) |             form.AddRow(Text('', size=(pad, 1), auto_size_text=False), SimpleButton('OK', size=(5, 1), button_color=button_color)) | ||||||
|         form.Show() |         button, values = form.Read() | ||||||
|  |         return button | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | PopupScrolled = ScrolledTextBox | ||||||
|  | 
 | ||||||
| # ---------------------------------------------------------------------- # | # ---------------------------------------------------------------------- # | ||||||
| #  GetPathBox                                                            # | #  GetPathBox                                                            # | ||||||
| #   Pre-made dialog that looks like this roughly                         # | #   Pre-made dialog that looks like this roughly                         # | ||||||
|  | @ -2727,10 +2791,6 @@ def GetPathBox(title, message, default_path='', button_color=None, size=(None, N | ||||||
|             return True, path |             return True, path | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| GetFolder = GetPathBox |  | ||||||
| AskForFolder = GetPathBox |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def PopupGetFolder(message, default_path='', button_color=None, size=(None, None)): | def PopupGetFolder(message, default_path='', button_color=None, size=(None, None)): | ||||||
|     with FlexForm(title=message, auto_size_text=True, button_color=button_color) as form: |     with FlexForm(title=message, auto_size_text=True, button_color=button_color) as form: | ||||||
|         layout = [[Text(message, auto_size_text=True)], |         layout = [[Text(message, auto_size_text=True)], | ||||||
|  | @ -2792,11 +2852,6 @@ def GetTextBox(title, message, Default='', button_color=None, size=(None, None)) | ||||||
|         else: |         else: | ||||||
|             return True, input_values[0] |             return True, input_values[0] | ||||||
| 
 | 
 | ||||||
| GetText = GetTextBox |  | ||||||
| GetString = GetTextBox |  | ||||||
| AskForText = GetTextBox |  | ||||||
| AskForString = GetTextBox |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| def PopupGetText(message, Default='', button_color=None, size=(None, None)): | def PopupGetText(message, Default='', button_color=None, size=(None, None)): | ||||||
|     with FlexForm(title=message, auto_size_text=True, button_color=button_color) as form: |     with FlexForm(title=message, auto_size_text=True, button_color=button_color) as form: | ||||||
|  | @ -2981,11 +3036,26 @@ def ChangeLookAndFeel(index): | ||||||
| 
 | 
 | ||||||
|                       'GreenTan': {'BACKGROUND' : '#9FB8AD', 'TEXT': COLOR_SYSTEM_DEFAULT, 'INPUT':'#F7F3EC','TEXT_INPUT' : 'black','SCROLL': '#F7F3EC', 'BUTTON': ('white', '#475841'), 'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1,'SLIDER_DEPTH':0, 'PROGRESS_DEPTH':0}, |                       'GreenTan': {'BACKGROUND' : '#9FB8AD', 'TEXT': COLOR_SYSTEM_DEFAULT, 'INPUT':'#F7F3EC','TEXT_INPUT' : 'black','SCROLL': '#F7F3EC', 'BUTTON': ('white', '#475841'), 'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1,'SLIDER_DEPTH':0, 'PROGRESS_DEPTH':0}, | ||||||
| 
 | 
 | ||||||
|                       'Dark': {'BACKGROUND': 'gray25', 'TEXT': 'white', 'INPUT': 'gray40', |                       'Dark': {'BACKGROUND': 'gray25', 'TEXT': 'white', 'INPUT': 'gray30', | ||||||
|                                    'TEXT_INPUT': 'white', 'SCROLL': 'gray44', 'BUTTON': ('white', '#004F00'), |                                    'TEXT_INPUT': 'white', 'SCROLL': 'gray44', 'BUTTON': ('white', '#004F00'), | ||||||
|                                    'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1, 'SLIDER_DEPTH': 0, |                                    'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1, 'SLIDER_DEPTH': 0, | ||||||
|                                    'PROGRESS_DEPTH': 0}, |                                    'PROGRESS_DEPTH': 0}, | ||||||
| 
 | 
 | ||||||
|  |                       'Black': {'BACKGROUND': 'black', 'TEXT': 'white', 'INPUT': 'gray30', | ||||||
|  |                                'TEXT_INPUT': 'white', 'SCROLL': 'gray44', 'BUTTON': ('black', 'white'), | ||||||
|  |                                'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1, 'SLIDER_DEPTH': 0, | ||||||
|  |                                'PROGRESS_DEPTH': 0}, | ||||||
|  | 
 | ||||||
|  |                       'Reds': {'BACKGROUND': '#280001', 'TEXT': 'white', 'INPUT': '#d8d584', | ||||||
|  |                                'TEXT_INPUT': 'black', 'SCROLL': '#763e00', 'BUTTON': ('black', '#daad28'), | ||||||
|  |                                'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1, 'SLIDER_DEPTH': 0, | ||||||
|  |                                'PROGRESS_DEPTH': 0}, | ||||||
|  | 
 | ||||||
|  |                       'Green': {'BACKGROUND': '#82a459', 'TEXT': 'black', 'INPUT': '#d8d584', | ||||||
|  |                                'TEXT_INPUT': 'black', 'SCROLL': '#e3ecf3', 'BUTTON': ('white', '#517239'), | ||||||
|  |                                'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1, 'SLIDER_DEPTH': 0, | ||||||
|  |                                'PROGRESS_DEPTH': 0}, | ||||||
|  | 
 | ||||||
|                       'LightGreen' :{'BACKGROUND' : '#B7CECE', 'TEXT': 'black', 'INPUT':'#FDFFF7','TEXT_INPUT' : 'black', 'SCROLL': '#FDFFF7','BUTTON': ('white', '#658268'), 'PROGRESS':DEFAULT_PROGRESS_BAR_COLOR, 'BORDER':1,'SLIDER_DEPTH':0, 'PROGRESS_DEPTH':0}, |                       'LightGreen' :{'BACKGROUND' : '#B7CECE', 'TEXT': 'black', 'INPUT':'#FDFFF7','TEXT_INPUT' : 'black', 'SCROLL': '#FDFFF7','BUTTON': ('white', '#658268'), 'PROGRESS':DEFAULT_PROGRESS_BAR_COLOR, 'BORDER':1,'SLIDER_DEPTH':0, 'PROGRESS_DEPTH':0}, | ||||||
| 
 | 
 | ||||||
|                       'BluePurple': {'BACKGROUND' : '#A5CADD', 'TEXT': '#6E266E', 'INPUT':'#E0F5FF','TEXT_INPUT' : 'black', 'SCROLL': '#E0F5FF','BUTTON': ('white', '#303952'),'PROGRESS':DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1,'SLIDER_DEPTH':0, 'PROGRESS_DEPTH':0}, |                       'BluePurple': {'BACKGROUND' : '#A5CADD', 'TEXT': '#6E266E', 'INPUT':'#E0F5FF','TEXT_INPUT' : 'black', 'SCROLL': '#E0F5FF','BUTTON': ('white', '#303952'),'PROGRESS':DEFAULT_PROGRESS_BAR_COLOR, 'BORDER': 1,'SLIDER_DEPTH':0, 'PROGRESS_DEPTH':0}, | ||||||
|  | @ -3070,7 +3140,7 @@ def main(): | ||||||
|                      [Text('Here is your sample input form....')], |                      [Text('Here is your sample input form....')], | ||||||
|                      [Text('Source Folder', size=(15, 1), justification='right'), InputText('Source', focus=True),FolderBrowse()], |                      [Text('Source Folder', size=(15, 1), justification='right'), InputText('Source', focus=True),FolderBrowse()], | ||||||
|                      [Text('Destination Folder', size=(15, 1), justification='right'), InputText('Dest'), FolderBrowse()], |                      [Text('Destination Folder', size=(15, 1), justification='right'), InputText('Dest'), FolderBrowse()], | ||||||
|                      [Ok(bind_return_key=True), Cancel()]] |                      [Ok(), Cancel()]] | ||||||
| 
 | 
 | ||||||
|         button, (source, dest) = form.LayoutAndRead(form_rows) |         button, (source, dest) = form.LayoutAndRead(form_rows) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue