Возможно ли получить настройки виджетов в Tkinter? - PullRequest
9 голосов
/ 11 июля 2010

Было бы замечательно, если бы я мог получить что-то вроде ниже.

Псевдокод:

U = widget1.SettingsGet()
Print U 

После печати U будет возвращено что-то вроде этого:

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

Было бы очень полезно иметь возможность получить настройки виджетов. Так что я могу управлять другими виджетами соответственно.

Ответы [ 2 ]

23 голосов
/ 11 июля 2010

Если вы знаете, какие настройки вам нужны, вы можете просто использовать метод cget для получения значений, например,

from Tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")
w.pack()
print w.cget('text')
root.mainloop()

Будет напечатано

Hello, world!

Если вы хотите знать все доступные опции, widget.config содержит конфигурацию и, если хотите, вы можете создать все или поднабор настроек, которые могут вам понадобиться, например,

import pprint
from Tkinter import *

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

Выход:

{'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>)}
5 голосов
/ 25 августа 2015

Чтобы получить все атрибуты виджета из cget, вы можете использовать keys () для получения атрибутов, а затем cget для получения значения этих атрибутов. IE:

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

Этот код возвращает:

    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

Это было много пробелов>. <</p>

В этом блоке первый - это ключ, а второй - значение указанного ключа. Метод keys (для всех виджетов) возвращает все ключи в указанном виджете. Config возвращает ключи и то, к чему они применяются (курсор против курсора), где ключи просто дают список всех атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...