2010-07-11 60 views
8

如果我能得到像下面這樣的東西,那會很棒。是否可以在Tkinter中獲取小部件設置?

僞代碼:

U = widget1.SettingsGet() 
Print U 

在打印時ü像這樣將返回:

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

這將是能夠得到一個小部件設置非常有用。以便我可以相應地操縱其他小部件。

回答

18

爲什麼您需要在單個字典中一次設置所有設置,無論如何,您必須從該設置字典中訪問特定設置,因此只需使用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>)} 
3

要想從cget一個小部件的所有屬性,您可以使用鍵()來獲得屬性,然後cget得到這些atributes的價值。 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 

這是一個很大的空間>。 <

在此塊中,第一個是密鑰,第二個是所述密鑰的值。鍵方法(對於所有小部件)返回所述小部件中的所有鍵。 Config返回鍵和它們適用的內容(遊標與光標),其中鍵只提供所有屬性的列表。

相關問題