2012-01-17 22 views
5

Si creo un widget en Tkinter, puedo especificar un nombre de widget que tome parte en el concepto tcl/tk "ruta del widget". Por ejemplo:¿Es posible buscar widget por nombre en Tkinter?

from Tkinter import * 
button = Button(Frame(Tk(), name = "myframe"), name = "mybutton") 
str(button) == ".myframe.mybutton" 

¿Es posible obtener un widget por su nombre, "myButton" en mi ejemplo?

Respuesta

7

Sí, pero usted tiene que mantener una referencia a la raíz "Tk" ejemplo: sólo tiene que utilizar el método "Tk.nametowidget":

>>> from Tkinter import * 
>>> win = Tk() 
>>> button = Button(Frame(win, name = "myframe"), name = "mybutton") 
>>> win.nametowidget("myframe.mybutton") 
<Tkinter.Button instance at 0x2550c68> 
3

widget de cada Tkinter tiene un atributo children que es un diccionario de widget namewidget instance. Dado que, uno puede encontrar cualquier subwidget por:

widget.children['subwidget_name'].children['subsubwidget_name'] # ... 
Cuestiones relacionadas