Tutorial :Is it possible to get widget settings in Tkinter?



Question:

It'd be awesome if I could get something like the below.

Pseudo Code:

U = widget1.SettingsGet()  Print U   

Upon printing U something like this would be returned:

widget1(background='green',foreground='grey',boarderwidth=10, relief='flat')  

It would be really useful to be able to get a widgets settings. So that I can manipulate other widgets accordingly.


Solution:1

If you know what settings you need, you can just use the cget method to get values e.g.

from Tkinter import *    root = Tk()    w = Label(root, text="Hello, world!")  w.pack()  print w.cget('text')  root.mainloop()  

It will print

Hello, world!  

If you want to know all the available options, widget.config contains the config and from that if you wish you can create all or a subset of settings which you may need e.g.

import pprint  from Tkinter import *    root = Tk()  w = Label(root, text="Hello, world!")  w.pack()  pprint.pprint(w.config())  root.mainloop()  

Output:

{'activebackground': ('activebackground',                        'activeBackground',                        'Foreground',                        <border object at 00C665D0>,                        'SystemButtonFace'),   'activeforeground': ('activeforeground',                        'activeForeground',                        'Background',                        <color object at 00C66C48>,                        'SystemButtonText'),   'anchor': ('anchor',              'anchor',              'Anchor',              <index object at 00C66588>,              'center'),   'background': ('background',                  'background',                  'Background',                  <border object at 0119A3E0>,                  'SystemButtonFace'),   'bd': ('bd', '-borderwidth'),   'bg': ('bg', '-background'),   'bitmap': ('bitmap', 'bitmap', 'Bitmap', '', ''),   'borderwidth': ('borderwidth',                   'borderWidth',                   'BorderWidth',                   <pixel object at 0119A0F8>,                   <pixel object at 0119A0F8>),   'compound': ('compound',                'compound',                'Compound',                <index object at 011A90D8>,                'none'),   'cursor': ('cursor', 'cursor', 'Cursor', '', ''),   'disabledforeground': ('disabledforeground',                          'disabledForeground',                          'DisabledForeground',                          <color object at 011A5DB0>,                          'SystemDisabledText'),   'fg': ('fg', '-foreground'),   'font': ('font',            'font',            'Font',            <font object at 011A5E40>,            (('MS', 'Sans', 'Serif'), '8')),   'foreground': ('foreground',                  'foreground',                  'Foreground',                  <color object at 011A5F48>,                  'SystemButtonText'),   'height': ('height', 'height', 'Height', 0, 0),   'highlightbackground': ('highlightbackground',                           'highlightBackground',                           'HighlightBackground',                           <border object at 011A5EE8>,                           'SystemButtonFace'),   'highlightcolor': ('highlightcolor',                      'highlightColor',                      'HighlightColor',                      <color object at 011A5F78>,                      'SystemWindowFrame'),   'highlightthickness': ('highlightthickness',                          'highlightThickness',                          'HighlightThickness',                          <pixel object at 011A5FA8>,                          <pixel object at 011A5FA8>),   'image': ('image', 'image', 'Image', '', ''),   'justify': ('justify',               'justify',               'Justify',               <index object at 011A5F30>,               'center'),   'padx': ('padx',            'padX',            'Pad',            <pixel object at 011A5FC0>,            <pixel object at 011A5FC0>),   'pady': ('pady',            'padY',            'Pad',            <pixel object at 011A5FD8>,            <pixel object at 011A5FD8>),   'relief': ('relief', 'relief', 'Relief', <index object at 011A5FF0>, 'flat'),   'state': ('state', 'state', 'State', <index object at 011A5EA0>, 'normal'),   'takefocus': ('takefocus', 'takeFocus', 'TakeFocus', '0', '0'),   'text': ('text', 'text', 'Text', '', ('Hello,', 'world!')),   'textvariable': ('textvariable', 'textVariable', 'Variable', '', ''),   'underline': ('underline', 'underline', 'Underline', -1, -1),   'width': ('width', 'width', 'Width', 0, 0),   'wraplength': ('wraplength',                  'wrapLength',                  'WrapLength',                  <pixel object at 00C50908>,                  <pixel object at 00C50908>)}  


Solution:2

To get all attributes of a widget from cget, you can use keys() to get the attributes and then cget to get the value of those atributes. IE:

    from tkinter import *      root=Tk()      w=Button(root)      for item in w.keys():          print(item)          print(w.cget(item))  

This code returns:

    activebackground      systemButtonFacePressed      activeforeground      systemPushButtonPressedText      anchor      center      background      White      bd      2      bg      White      bitmap        borderwidth      2      command        compound      none      cursor        default      disabled      disabledforeground      #a3a3a3      fg      systemButtonText      font      TkDefaultFont      foreground      systemButtonText      height      0      highlightbackground      White      highlightcolor      systemButtonFrame      highlightthickness      4      image        justify      center      overrelief        padx      12      pady      3      relief      flat      repeatdelay      0      repeatinterval      0      state      normal      takefocus        text        textvariable        underline      -1      width      0      wraplength      0  

That was a lot of spaces >.<

In this block the first is the key and the second is the value of said key. The keys method (for all widgets) returns all of the keys in said widget. Config returns the keys and what they apply to (cursor vs Cursor) where keys just gives a list of all attributes.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »