Button get image_source parm (finally). Button, ButtonMenu gains zoom parm.
This commit is contained in:
		
							parent
							
								
									95fd3c53a2
								
							
						
					
					
						commit
						f69322799d
					
				
					 1 changed files with 58 additions and 14 deletions
				
			
		|  | @ -1,6 +1,6 @@ | ||||||
| #!/usr/bin/python3 | #!/usr/bin/python3 | ||||||
| 
 | 
 | ||||||
| version = __version__ = "4.60.4.115 Unreleased" | version = __version__ = "4.60.4.116 Unreleased" | ||||||
| 
 | 
 | ||||||
| _change_log = """ | _change_log = """ | ||||||
|     Changelog since 4.60.0 released to PyPI on 8-May-2022 |     Changelog since 4.60.0 released to PyPI on 8-May-2022 | ||||||
|  | @ -288,6 +288,13 @@ _change_log = """ | ||||||
|         Added execute_py_get_running_interpreter to differentiate between the one in the settings file versus currently running interpreter |         Added execute_py_get_running_interpreter to differentiate between the one in the settings file versus currently running interpreter | ||||||
|     4.60.4.115 |     4.60.4.115 | ||||||
|         Image Element... added Zooooooooommmmm parameter |         Image Element... added Zooooooooommmmm parameter | ||||||
|  |     4.60.4.116 | ||||||
|  |         Proliferiation/infection of the zoom parameter to more elements with images - Button, ButtonMenu | ||||||
|  |             Note that zoom and subsample can BOTH be used. This enables fractional scaling. Want 2/3 the size of the image? subsample=3, zoom=2 | ||||||
|  |             Tab is the remaining element this is being added to | ||||||
|  |             The Buttons implemented as functions need this addition as well | ||||||
|  |         Addition of the image_source parameter to Button and Button.update. This way of specifying images is commonly used in other elements  | ||||||
|  |         Fixed ButtonMenu bug - subsample was not being applied to initial image in the layout | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
| __version__ = version.split()[0]  # For PEP 396 and PEP 345 | __version__ = version.split()[0]  # For PEP 396 and PEP 345 | ||||||
|  | @ -4737,7 +4744,7 @@ class Button(Element): | ||||||
|     def __init__(self, button_text='', button_type=BUTTON_TYPE_READ_FORM, target=(None, None), tooltip=None, |     def __init__(self, button_text='', button_type=BUTTON_TYPE_READ_FORM, target=(None, None), tooltip=None, | ||||||
|                  file_types=FILE_TYPES_ALL_FILES, initial_folder=None, default_extension='', disabled=False, change_submits=False, |                  file_types=FILE_TYPES_ALL_FILES, initial_folder=None, default_extension='', disabled=False, change_submits=False, | ||||||
|                  enable_events=False, image_filename=None, image_data=None, image_size=(None, None), |                  enable_events=False, image_filename=None, image_data=None, image_size=(None, None), | ||||||
|                  image_subsample=None, image_source=None, border_width=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, |                  image_subsample=None, image_zoom=None, image_source=None, border_width=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, | ||||||
|                  disabled_button_color=None, |                  disabled_button_color=None, | ||||||
|                  highlight_colors=None, mouseover_colors=(None, None), use_ttk_buttons=None, font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, |                  highlight_colors=None, mouseover_colors=(None, None), use_ttk_buttons=None, font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, | ||||||
|                  k=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): |                  k=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): | ||||||
|  | @ -4772,6 +4779,8 @@ class Button(Element): | ||||||
|         :type image_size:             (int, int) |         :type image_size:             (int, int) | ||||||
|         :param image_subsample:       amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc |         :param image_subsample:       amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc | ||||||
|         :type image_subsample:        (int) |         :type image_subsample:        (int) | ||||||
|  |         :param image_zoom:            amount to increase the size of the image. 2=twice size, 3=3 times, etc | ||||||
|  |         :type image_zoom:             (int) | ||||||
|         :param border_width:          width of border around button in pixels |         :param border_width:          width of border around button in pixels | ||||||
|         :type border_width:           (int) |         :type border_width:           (int) | ||||||
|         :param size:                  (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 |         :param size:                  (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 | ||||||
|  | @ -4859,6 +4868,7 @@ class Button(Element): | ||||||
|         self.ImageData = image_data |         self.ImageData = image_data | ||||||
|         self.ImageSize = image_size |         self.ImageSize = image_size | ||||||
|         self.ImageSubsample = image_subsample |         self.ImageSubsample = image_subsample | ||||||
|  |         self.zoom = int(image_zoom) if image_zoom is not None else None | ||||||
|         self.UserData = None |         self.UserData = None | ||||||
|         self.BorderWidth = border_width if border_width is not None else DEFAULT_BORDER_WIDTH |         self.BorderWidth = border_width if border_width is not None else DEFAULT_BORDER_WIDTH | ||||||
|         self.BindReturnKey = bind_return_key |         self.BindReturnKey = bind_return_key | ||||||
|  | @ -5142,8 +5152,8 @@ class Button(Element): | ||||||
| 
 | 
 | ||||||
|         return |         return | ||||||
| 
 | 
 | ||||||
|     def update(self, text=None, button_color=(None, None), disabled=None, image_data=None, image_filename=None, |     def update(self, text=None, button_color=(None, None), disabled=None, image_source=None, image_data=None, image_filename=None, | ||||||
|                visible=None, image_subsample=None, disabled_button_color=(None, None), image_size=None): |                visible=None, image_subsample=None, image_zoom=None, disabled_button_color=(None, None), image_size=None): | ||||||
|         """ |         """ | ||||||
|         Changes some of the settings for the Button Element. Must call `Window.Read` or `Window.Finalize` prior |         Changes some of the settings for the Button Element. Must call `Window.Read` or `Window.Finalize` prior | ||||||
| 
 | 
 | ||||||
|  | @ -5159,6 +5169,8 @@ class Button(Element): | ||||||
|         :type button_color:           (str, str) | str | (int, int) | None |         :type button_color:           (str, str) | str | (int, int) | None | ||||||
|         :param disabled:              True/False to enable/disable at the GUI level. Use BUTTON_DISABLED_MEANS_IGNORE to ignore clicks (won't change colors) |         :param disabled:              True/False to enable/disable at the GUI level. Use BUTTON_DISABLED_MEANS_IGNORE to ignore clicks (won't change colors) | ||||||
|         :type disabled:               (bool | str) |         :type disabled:               (bool | str) | ||||||
|  |         :param image_source:          Image to place on button. Use INSTEAD of the image_filename and image_data. Unifies these into 1 easier to use parm | ||||||
|  |         :type image_source:           (str | bytes) | ||||||
|         :param image_data:            Raw or Base64 representation of the image to put on button. Choose either filename or data |         :param image_data:            Raw or Base64 representation of the image to put on button. Choose either filename or data | ||||||
|         :type image_data:             bytes | str |         :type image_data:             bytes | str | ||||||
|         :param image_filename:        image filename if there is a button image. GIFs and PNGs only. |         :param image_filename:        image filename if there is a button image. GIFs and PNGs only. | ||||||
|  | @ -5169,6 +5181,8 @@ class Button(Element): | ||||||
|         :type visible:                (bool) |         :type visible:                (bool) | ||||||
|         :param image_subsample:       amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc |         :param image_subsample:       amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc | ||||||
|         :type image_subsample:        (int) |         :type image_subsample:        (int) | ||||||
|  |         :param image_zoom:            amount to increase the size of the image. 2=twice size, 3=3 times, etc | ||||||
|  |         :type image_zoom:             (int) | ||||||
|         :param image_size:            Size of the image in pixels (width, height) |         :param image_size:            Size of the image in pixels (width, height) | ||||||
|         :type image_size:             (int, int) |         :type image_size:             (int, int) | ||||||
|         """ |         """ | ||||||
|  | @ -5180,6 +5194,11 @@ class Button(Element): | ||||||
|             _error_popup_with_traceback('Error in Button.update - The window was closed') |             _error_popup_with_traceback('Error in Button.update - The window was closed') | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
|  |         if image_source is not None: | ||||||
|  |             if isinstance(image_source, bytes): | ||||||
|  |                 image_data = image_source | ||||||
|  |             elif isinstance(image_source, str): | ||||||
|  |                 image_filename = image_source | ||||||
| 
 | 
 | ||||||
|         if self.UseTtkButtons: |         if self.UseTtkButtons: | ||||||
|             style_name = self.ttk_style_name        # created when made initial window (in the pack) |             style_name = self.ttk_style_name        # created when made initial window (in the pack) | ||||||
|  | @ -5229,6 +5248,8 @@ class Button(Element): | ||||||
|             image = tk.PhotoImage(data=image_data) |             image = tk.PhotoImage(data=image_data) | ||||||
|             if image_subsample: |             if image_subsample: | ||||||
|                 image = image.subsample(image_subsample) |                 image = image.subsample(image_subsample) | ||||||
|  |             if image_zoom is not None: | ||||||
|  |                 image = image.zoom(int(image_zoom)) | ||||||
|             if image_size is not None: |             if image_size is not None: | ||||||
|                 width, height = image_size |                 width, height = image_size | ||||||
|             else: |             else: | ||||||
|  | @ -5242,6 +5263,8 @@ class Button(Element): | ||||||
|             image = tk.PhotoImage(file=image_filename) |             image = tk.PhotoImage(file=image_filename) | ||||||
|             if image_subsample: |             if image_subsample: | ||||||
|                 image = image.subsample(image_subsample) |                 image = image.subsample(image_subsample) | ||||||
|  |             if image_zoom is not None: | ||||||
|  |                 image = image.zoom(int(image_zoom)) | ||||||
|             if image_size is not None: |             if image_size is not None: | ||||||
|                 width, height = image_size |                 width, height = image_size | ||||||
|             else: |             else: | ||||||
|  | @ -5307,7 +5330,7 @@ class ButtonMenu(Element): | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     def __init__(self, button_text, menu_def, tooltip=None, disabled=False, image_source=None, |     def __init__(self, button_text, menu_def, tooltip=None, disabled=False, image_source=None, | ||||||
|                  image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, border_width=None, |                  image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, image_zoom=None, border_width=None, | ||||||
|                  size=(None, None), s=(None, None), auto_size_button=None, button_color=None, text_color=None, background_color=None, disabled_text_color=None, |                  size=(None, None), s=(None, None), auto_size_button=None, button_color=None, text_color=None, background_color=None, disabled_text_color=None, | ||||||
|                  font=None, item_font=None, pad=None, p=None, expand_x=False, expand_y=False, key=None, k=None, tearoff=False, visible=True, |                  font=None, item_font=None, pad=None, p=None, expand_x=False, expand_y=False, key=None, k=None, tearoff=False, visible=True, | ||||||
|                  metadata=None): |                  metadata=None): | ||||||
|  | @ -5330,6 +5353,8 @@ class ButtonMenu(Element): | ||||||
|         :type image_size:                 (int, int) |         :type image_size:                 (int, int) | ||||||
|         :param image_subsample:           amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc |         :param image_subsample:           amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc | ||||||
|         :type image_subsample:            (int) |         :type image_subsample:            (int) | ||||||
|  |         :param image_zoom:                amount to increase the size of the image. 2=twice size, 3=3 times, etc | ||||||
|  |         :type image_zoom:                 (int) | ||||||
|         :param border_width:              width of border around button in pixels |         :param border_width:              width of border around button in pixels | ||||||
|         :type border_width:               (int) |         :type border_width:               (int) | ||||||
|         :param size:                      (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 |         :param size:                      (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 | ||||||
|  | @ -5395,6 +5420,7 @@ class ButtonMenu(Element): | ||||||
|         self.ImageData = image_data |         self.ImageData = image_data | ||||||
|         self.ImageSize = image_size |         self.ImageSize = image_size | ||||||
|         self.ImageSubsample = image_subsample |         self.ImageSubsample = image_subsample | ||||||
|  |         self.zoom = int(image_zoom) if image_zoom is not None else None | ||||||
|         self.Disabled = disabled |         self.Disabled = disabled | ||||||
|         self.IsButtonMenu = True |         self.IsButtonMenu = True | ||||||
|         self.MenuItemChosen = None |         self.MenuItemChosen = None | ||||||
|  | @ -5430,7 +5456,7 @@ class ButtonMenu(Element): | ||||||
|         _exit_mainloop(self.ParentForm) |         _exit_mainloop(self.ParentForm) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def update(self, menu_definition=None, visible=None, image_source=None, image_size=(None, None), image_subsample=None, button_text=None): |     def update(self, menu_definition=None, visible=None, image_source=None, image_size=(None, None), image_subsample=None, image_zoom=None, button_text=None): | ||||||
|         """ |         """ | ||||||
|         Changes some of the settings for the ButtonMenu Element. Must call `Window.Read` or `Window.Finalize` prior |         Changes some of the settings for the ButtonMenu Element. Must call `Window.Read` or `Window.Finalize` prior | ||||||
| 
 | 
 | ||||||
|  | @ -5450,6 +5476,8 @@ class ButtonMenu(Element): | ||||||
|         :type image_size:       (int, int) |         :type image_size:       (int, int) | ||||||
|         :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc |         :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc | ||||||
|         :type image_subsample:  (int) |         :type image_subsample:  (int) | ||||||
|  |         :param image_zoom:      amount to increase the size of the image. 2=twice size, 3=3 times, etc | ||||||
|  |         :type image_zoom:       (int) | ||||||
|         :param button_text:     Text to be shown on the button |         :param button_text:     Text to be shown on the button | ||||||
|         :type button_text:      (str) |         :type button_text:      (str) | ||||||
|         """ |         """ | ||||||
|  | @ -5490,12 +5518,16 @@ class ButtonMenu(Element): | ||||||
|                 image = tk.PhotoImage(file=filename) |                 image = tk.PhotoImage(file=filename) | ||||||
|                 if image_subsample is not None: |                 if image_subsample is not None: | ||||||
|                     image = image.subsample(image_subsample) |                     image = image.subsample(image_subsample) | ||||||
|  |                 if image_zoom is not None: | ||||||
|  |                     image = image.zoom(int(image_zoom)) | ||||||
|             elif data is not None: |             elif data is not None: | ||||||
|                 # if type(data) is bytes: |                 # if type(data) is bytes: | ||||||
|                 try: |                 try: | ||||||
|                     image = tk.PhotoImage(data=data) |                     image = tk.PhotoImage(data=data) | ||||||
|                     if image_subsample is not None: |                     if image_subsample is not None: | ||||||
|                         image = image.subsample(image_subsample) |                         image = image.subsample(image_subsample) | ||||||
|  |                     if image_zoom is not None: | ||||||
|  |                         image = image.zoom(int(image_zoom)) | ||||||
|                 except Exception as e: |                 except Exception as e: | ||||||
|                     image = data |                     image = data | ||||||
| 
 | 
 | ||||||
|  | @ -5773,6 +5805,7 @@ class Image(Element): | ||||||
|         self.TotalAnimatedFrames = 0 |         self.TotalAnimatedFrames = 0 | ||||||
|         self.LastFrameTime = 0 |         self.LastFrameTime = 0 | ||||||
|         self.ImageSubsample = subsample |         self.ImageSubsample = subsample | ||||||
|  |         self.zoom = int(zoom) if zoom is not None else None | ||||||
| 
 | 
 | ||||||
|         self.Source = filename if filename is not None else data |         self.Source = filename if filename is not None else data | ||||||
|         key = key if key is not None else k |         key = key if key is not None else k | ||||||
|  | @ -5780,7 +5813,6 @@ class Image(Element): | ||||||
|         pad = pad if pad is not None else p |         pad = pad if pad is not None else p | ||||||
|         self.expand_x = expand_x |         self.expand_x = expand_x | ||||||
|         self.expand_y = expand_y |         self.expand_y = expand_y | ||||||
|         self.zoom = zoom |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         super().__init__(ELEM_TYPE_IMAGE, size=sz, background_color=background_color, pad=pad, key=key, |         super().__init__(ELEM_TYPE_IMAGE, size=sz, background_color=background_color, pad=pad, key=key, | ||||||
|  | @ -5838,7 +5870,7 @@ class Image(Element): | ||||||
|                 if subsample is not None: |                 if subsample is not None: | ||||||
|                     image = image.subsample(subsample) |                     image = image.subsample(subsample) | ||||||
|                 if zoom is not None: |                 if zoom is not None: | ||||||
|                     image = image.zoom(zoom) |                     image = image.zoom(int(zoom)) | ||||||
|             except Exception as e: |             except Exception as e: | ||||||
|                 _error_popup_with_traceback('Exception updating Image element', e) |                 _error_popup_with_traceback('Exception updating Image element', e) | ||||||
| 
 | 
 | ||||||
|  | @ -5849,7 +5881,7 @@ class Image(Element): | ||||||
|                 if subsample is not None: |                 if subsample is not None: | ||||||
|                     image = image.subsample(subsample) |                     image = image.subsample(subsample) | ||||||
|                 if zoom is not None: |                 if zoom is not None: | ||||||
|                     image = image.zoom(zoom) |                     image = image.zoom(int(zoom)) | ||||||
|             except Exception as e: |             except Exception as e: | ||||||
|                 image = data |                 image = data | ||||||
|                 # return  # an error likely means the window has closed so exit |                 # return  # an error likely means the window has closed so exit | ||||||
|  | @ -15830,6 +15862,8 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|                         photo = tk.PhotoImage(file=element.ImageFilename) |                         photo = tk.PhotoImage(file=element.ImageFilename) | ||||||
|                         if element.ImageSubsample: |                         if element.ImageSubsample: | ||||||
|                             photo = photo.subsample(element.ImageSubsample) |                             photo = photo.subsample(element.ImageSubsample) | ||||||
|  |                         if element.zoom: | ||||||
|  |                             photo = photo.zoom(element.zoom) | ||||||
|                         if element.ImageSize != (None, None): |                         if element.ImageSize != (None, None): | ||||||
|                             width, height = element.ImageSize |                             width, height = element.ImageSize | ||||||
|                         else: |                         else: | ||||||
|  | @ -15847,6 +15881,8 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|                         photo = tk.PhotoImage(data=element.ImageData) |                         photo = tk.PhotoImage(data=element.ImageData) | ||||||
|                         if element.ImageSubsample: |                         if element.ImageSubsample: | ||||||
|                             photo = photo.subsample(element.ImageSubsample) |                             photo = photo.subsample(element.ImageSubsample) | ||||||
|  |                         if element.zoom: | ||||||
|  |                             photo = photo.zoom(element.zoom) | ||||||
|                         if element.ImageSize != (None, None): |                         if element.ImageSize != (None, None): | ||||||
|                             width, height = element.ImageSize |                             width, height = element.ImageSize | ||||||
|                         else: |                         else: | ||||||
|  | @ -15986,6 +16022,8 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|                     photo = tk.PhotoImage(file=element.ImageFilename) |                     photo = tk.PhotoImage(file=element.ImageFilename) | ||||||
|                     if element.ImageSubsample: |                     if element.ImageSubsample: | ||||||
|                         photo = photo.subsample(element.ImageSubsample) |                         photo = photo.subsample(element.ImageSubsample) | ||||||
|  |                     if element.zoom: | ||||||
|  |                         photo = photo.zoom(element.zoom) | ||||||
|                     if element.ImageSize != (None, None): |                     if element.ImageSize != (None, None): | ||||||
|                         width, height = element.ImageSize |                         width, height = element.ImageSize | ||||||
|                     else: |                     else: | ||||||
|  | @ -15999,6 +16037,8 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|                     photo = tk.PhotoImage(data=element.ImageData) |                     photo = tk.PhotoImage(data=element.ImageData) | ||||||
|                     if element.ImageSubsample: |                     if element.ImageSubsample: | ||||||
|                         photo = photo.subsample(element.ImageSubsample) |                         photo = photo.subsample(element.ImageSubsample) | ||||||
|  |                     if element.zoom: | ||||||
|  |                         photo = photo.zoom(element.zoom) | ||||||
|                     if element.ImageSize != (None, None): |                     if element.ImageSize != (None, None): | ||||||
|                         width, height = element.ImageSize |                         width, height = element.ImageSize | ||||||
|                     else: |                     else: | ||||||
|  | @ -16070,20 +16110,24 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|                 wraplen = tkbutton.winfo_reqwidth()  # width of widget in Pixels |                 wraplen = tkbutton.winfo_reqwidth()  # width of widget in Pixels | ||||||
|                 if element.ImageFilename:  # if button has an image on it |                 if element.ImageFilename:  # if button has an image on it | ||||||
|                     photo = tk.PhotoImage(file=element.ImageFilename) |                     photo = tk.PhotoImage(file=element.ImageFilename) | ||||||
|  |                     if element.ImageSubsample: | ||||||
|  |                         photo = photo.subsample(element.ImageSubsample) | ||||||
|  |                     if element.zoom: | ||||||
|  |                         photo = photo.zoom(element.zoom) | ||||||
|                     if element.ImageSize != (None, None): |                     if element.ImageSize != (None, None): | ||||||
|                         width, height = element.ImageSize |                         width, height = element.ImageSize | ||||||
|                         if element.ImageSubsample: |  | ||||||
|                             photo = photo.subsample(element.ImageSubsample) |  | ||||||
|                     else: |                     else: | ||||||
|                         width, height = photo.width(), photo.height() |                         width, height = photo.width(), photo.height() | ||||||
|                     tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) |                     tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) | ||||||
|                     tkbutton.image = photo |                     tkbutton.image = photo | ||||||
|                 if element.ImageData:  # if button has an image on it |                 if element.ImageData:  # if button has an image on it | ||||||
|                     photo = tk.PhotoImage(data=element.ImageData) |                     photo = tk.PhotoImage(data=element.ImageData) | ||||||
|  |                     if element.ImageSubsample: | ||||||
|  |                         photo = photo.subsample(element.ImageSubsample) | ||||||
|  |                     if element.zoom: | ||||||
|  |                         photo = photo.zoom(element.zoom) | ||||||
|                     if element.ImageSize != (None, None): |                     if element.ImageSize != (None, None): | ||||||
|                         width, height = element.ImageSize |                         width, height = element.ImageSize | ||||||
|                         if element.ImageSubsample: |  | ||||||
|                             photo = photo.subsample(element.ImageSubsample) |  | ||||||
|                     else: |                     else: | ||||||
|                         width, height = photo.width(), photo.height() |                         width, height = photo.width(), photo.height() | ||||||
|                     tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) |                     tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) | ||||||
|  | @ -25999,4 +26043,4 @@ if __name__ == '__main__': | ||||||
|         exit(0) |         exit(0) | ||||||
|     main() |     main() | ||||||
|     exit(0) |     exit(0) | ||||||
| #5d695d68c4a7e63cd12db218f4158ea51c8652c570991cd506e91d85746769501ab47285f3824b3e57bd4a52c26445d00bfd4877fd8c63063acd726ec77142816a464cea82dfcb7f4dacd97df4850ec03f99609072c835c71574d9b60b9e761b14fb5b2223e459ac399fad3cd9f9c602884647743a8e141823e9491925d309215f287f12298b2fb5e9288924d2b76fa81b93767ea2a7a0f7ad565b6f505c27a7635ab0fed3bef0294c7fe8e08ff2d33053be0c0223f36f81a8c9c834bddfe6b1460b61d41d0d73be42ad49c4dc1f5dd7292169da9363b226fe9f8abed55162d160190687023b28a567faa1df5d18fee272015291f7bf4aae8339d43d48641d05cb6f2d9b99e67e4cdfa1bad5340a8979583be189191d6aa5f8507ef9efa36aa1218f90ca8ea8db62278192a65c76752d8a010b48c71a3c5936896921dbd8c24a567015ed6e4c39fa43f9d41e88dda4916974cdbb57c3cd56f01808184237730678b908130b89045789597a48a8bb9e9014bf8814925964b6a25644cc642e55ca93d7e1ceab8b08e6ab8b0e5dd965eaf9c3808248ae4b1be77dcc7c12b12bdc110b00388e423a700a1d7a41e9c89e4831db0cf753ddb8c9f090f1afe44c10d75864b98b96ad1605103160b288d08a5a63120464fa967a693631c1f4096cc9e89426c5330c0b656280da1b8fead3c1636033967369d8109f72b43d415364087a6d | #33bcae077a0dba66b1887318cb8442397d14da18fb71bc16aea1c5c321d780c42bd3bd6e540fc4e09e3bcacf1764964e46395f1479faaff0f26e672efacf5d29c49df93009eabcca45289a52a6137b53640ca6a8b8cacb7ec771bf006b8ed983ceb7e1b9ac95c6ad8cc6cb83fb9141914d703e842ddc6dcb97158f78bdd6f750bce5fdd23ef99a6f55ba0bab1b05866253eb31cdf5e21bdb87810d3737a91dcaf8b301de3f0ee18451a8934fd694f77352f601e2c24dcdede1a84820d3986241f9c75c22b56b9ac400180b2d0747e5e70b4b0a97958f47dd0742a229cc18b2212e8be8f72d4a9dd69afa2ef66a91d99760133141a4d24788d349f36961e1bbefde5f095a098e653efccf196c790c58cbad2a3ee7df40a9c701e079b0174fb76901b15e6ea2b3516042370657491680bc0235882620d3766351ab8422fd9cd76787e413e8c7c7b722418e159ccea0b3010d01c06e276b055120d4ae45caba4623737d72388fa4f9ee4386668b7f1143569d2ec0a04c88aab332abacd44c2d0c0bae470adc8dbab9edc9a88c35b02dbcbd049cb37bd562a789e68d361807f0d66f34fbcf0b00bdcd42efe6af7c79d88d6b310d6f509de073c8fd4d1ad3170695a52b1b065187b889728623bc8029ab167faaa1949be9b90128060c19cdf43bad7831945c22281db10360257f8682a513b5ccfb9b91e4c1473363629dd78fb83867 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue