ttk.Button 返回 None

3 投票
1 回答
2389 浏览
提问于 2025-04-15 17:50

我在尝试使用ttk.Button的invoke方法,具体可以参考TkDocs上的内容(看看“命令回调”那一部分),但是我一直遇到这个错误:

AttributeError: 'NoneType'对象没有'invoke'这个属性

所以,我在交互式命令行中试了这个:

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返回的是None。

ttk.Button是不是应该返回None呢?如果是的话,为什么TkDocs上说有invoke方法呢?

1 个回答

14

不,你完全错了:你的代码并没有显示 ttk.Button 返回的是 None -- 而是显示按钮对象的 grid 方法返回的是 None!你难道没注意到你是在调用 ttk.Button 返回的那个东西(按钮对象)的 .grid 方法吗?你把这个 grid 调用的结果赋值给了 "button" 吗?!

所以,正确做法是...:

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

现在你可以 print button,当然结果会大不相同!-)

撰写回答