ttk.Button возвращает None - PullRequest
       6

ttk.Button возвращает None

3 голосов
/ 09 января 2010

Я пытаюсь использовать метод invoke для ttk.Button, как показано на 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 Ответ

12 голосов
/ 09 января 2010

Нет, вы совершенно не правы: ваш код не показывает, что ttk.Button возвращает None - это показывает, что метод grid для объекта кнопки возвращает None! Разве вы не видите, что вы звоните .grid на то, что возвращает ttk.Button (объект кнопки), и это результат того вызова grid , который вы назначаете кнопке " «?!

Так что сделайте это правильно ...:

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

теперь вы можете print button и, конечно, результаты будут совсем другими! -)

...