2010-01-09 110 views
2

我試圖用一個ttk.Button的invoke方法,如在TkDocs所示(看「命令回調」),但我不斷收到此錯誤:ttk.Button返回None

AttributeError: 'NoneType' object has no attribute 'invoke'

所以,我在交互Shell嘗試這樣做:

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 

這都說明ttk.Button返回無。

ttk.Button是否返回None。而且,如果是這樣,爲什麼TkDocs會說有一個invoke方法?

+2

根據記錄,這也恰好非TTK!小部件,如果你使用'pack'而不是'grid'。 – Kevin 2014-05-20 15:26:22

回答

10

不,你是完全錯誤的:你的代碼做表明ttk.Button返回None - 它表明按鈕對象上grid方法返回None!君不見,你呼籲什麼,那就是ttk.Button返回(按鈕對象).grid,並且它是電網通話,你分配給「按鈕」的結果?

那麼做是正確的,而不是...:

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

現在你可以print button和結果當然會有很大的不同 - )