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?

È stato utile?

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 -!)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top