Можно ли получить настройки виджета в Tkinter?
было бы здорово, если бы я мог получить что-то вроде ниже.
Псевдо Код:
U = widget1.SettingsGet()
Print U
при печати U что-то вроде этого будет возвращено:
widget1(background='green',foreground='grey',boarderwidth=10, relief='flat')
было бы очень полезно иметь возможность получить настройки виджетов. Так что я могу манипулировать другими виджетами соответственно.
2 ответов
почему вам нужны все настройки сразу в одном словаре, в любом случае вам придется получить доступ к определенной настройке из этого словаря настроек, поэтому вместо этого просто используйте cget
метод для получения значений, например
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
print w.cget('text')
root.mainloop()
Он будет печатать
Hello, world!
если вы хотите знать все имеющиеся варианты, виджет.config содержит 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>)}
чтобы получить все атрибуты виджета из cget, вы можете использовать keys() для получения атрибутов, а затем cget для получения значения этих атрибутов. Т. е.:
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
это было много пробелов >.
в этом блоке первый является ключом, а второй-значением указанного ключа. Метод keys (для всех виджетов) возвращает все ключи в указанном виджете. Config возвращает ключи и то, к чему они применяются (курсор против Курсора) , где ключи просто дает список всех атрибутов.