Pergunta

Eu estou tentando usar o método de invocação de um ttk.Button, como mostrado em TkDocs (veja "O Comando Callback" ), mas eu continuo recebendo este erro:

AttributeError: objeto 'NoneType' tem nenhum atributo 'invocar'

Então, eu tentei isso no Shell interativo:

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

que mostra que ttk.Button retorna None.

é ttk.Button significava para retornar Nenhum. E, em caso afirmativo, por que TkDocs dizer que não há um método invoke?

Foi útil?

Solução

Não, você está totalmente errado: seu código faz não mostram que ttk.Button retornos None - Isso mostra que o método grid na None botão objeto retorna! Você não vê que você está chamando .grid sobre o que é que ttk.Button retornos (o objeto de botão), e é o resultado de que grade chamada que você está atribuindo ao "botão" ?!

Assim fazê-lo direito em vez ...:

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

Agora você pode print button e, claro, os resultados serão muito diferentes -!)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top