ttk.Button devuelve Ninguno

Estoy tratando de usar el método de invocación de un botón ttk.Button, como se muestra en TkDocs (mire “The Command Callback” ), pero continúo recibiendo este error:

AttributeError: el objeto ‘NoneType’ no tiene ningún atributo ‘invocar’

Entonces, probé esto en la Shell Interactiva:

ActivePython 3.1.1.2 (ActiveState Software Inc.) based on Python 3.1.1 (r311:74480, Aug 17 2009, 12:30:13) [MSC v.1500 32 bit (Intel)] on win32 >>> from tkinter import * >>> import tkinter.ttk as ttk >>> root = Tk() >>> button = ttk.Button(root, text="Test").grid(row=0, column=0) >>> print(button) None 

Lo que demuestra que ttk.Button devuelve Ninguno.

Es ttk.Button destinado a devolver ninguno. Y, si es así, ¿por qué dice TkDocs que hay un método de invocación?

No, está completamente equivocado: su código no muestra que ttk.Button devuelve None ; muestra que el método de grid en el objeto de botón no devuelve None . ¿No ves que estás llamando a .grid sobre lo que sea que retorna ttk.Button (el objeto del botón), y es el resultado de esa llamada de cuadrícula que estás asignando al “botón”?

Así que hazlo bien en su lugar …:

 button = ttk.Button(root, text="Test") button.grid(row=0, column=0) 

Ahora puede print button y, por supuesto, los resultados serán muy diferentes.