Вопрос

Я пытаюсь использовать метод вызова ttk.Кнопка, как показано на TkDocs (посмотрите на "Обратный вызов команды"), но я продолжаю получать эту ошибку:

Ошибка атрибута:Объект '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.Кнопка возвращает None.

Является ttk.Кнопка предназначена для возврата None.И, если да, то почему TkDocs говорит, что существует метод invoke?

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top