2010-07-11 11 views
8

Sería increíble si pudiera obtener algo como lo siguiente.¿Es posible obtener configuraciones de widgets en Tkinter?

Pseudo Código:

U = widget1.SettingsGet() 
Print U 

Al imprimir T algo como esto sería devuelto:

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

Sería muy útil ser capaz de obtener una configuración de widgets. Para que pueda manipular otros widgets en consecuencia.

Respuesta

18

Por qué necesita toda la configuración a la vez en un solo diccionario, de todos modos tendrá que acceder a una configuración específica de ese diccionario de configuraciones, entonces simplemente use el método cget para obtener valores, p.

from Tkinter import * 

root = Tk() 

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

Se imprimirá

Hello, world! 

Si quieres conocer todas las opciones disponibles, widget.config contiene la configuración y de que, si lo desea, puede crear todos o un subconjunto de los ajustes que se puede necesitar, por ejemplo

import pprint 
from Tkinter import * 

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

Salida:

{'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

para obtener todos los atributos de un widget de CGET, puede utilizar las teclas() para obtener los atributos y luego CGET para obtener el valor de esos atributos. IE:

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

Este código devuelve:

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 

Eso era una gran cantidad de espacios>. <

En este bloque el primero es la clave y el segundo es el valor de dicha clave. El método de claves (para todos los widgets) devuelve todas las claves en dicho widget. Config devuelve las claves y lo que aplican (cursor vs Cursor) donde las teclas solo dan una lista de todos los atributos.

Cuestiones relacionadas