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.