ttk.Button restituisce None
Domanda
Sto cercando di utilizzare il metodo invoke di un ttk.Button, come mostrato a TkDocs (guardo "Il comando di richiamata" ), ma continuo a ricevere questo errore:
AttributeError: oggetto 'NoneType' non ha alcun attributo 'invocare'
Così, ho provato questo nella shell interattiva:
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
Il che dimostra che ttk.Button restituisce None.
È ttk.Button scopo di restituire None. E, se sì, perché fa TkDocs dicono che c'è un metodo invoke?
Soluzione
No, tu sei completamente sbagliato: il codice fa non spettacolo che ttk.Button
rendimenti None
- dimostra che il metodo grid
sull'oggetto tasto ritorna None
! Non vedi che si sta chiamando .grid
su qualunque cosa è che ttk.Button
restituisce (l'oggetto pulsante), ed è il risultato di questo rete chiamata che si sta assegnando a "bottone" ?!
Quindi, farlo bene, invece ...:
button = ttk.Button(root, text="Test")
button.grid(row=0, column=0)
Ora si può print button
e, naturalmente, i risultati saranno molto diversi -!)