Изменение цвета объекта холста с помощью кнопки tkinter - PullRequest
0 голосов
/ 23 февраля 2019

У меня проблемы с получением кнопки для работы, как предполагалось в Python 3. При этом, когда она нажата, она меняет цвет круга с одного цвета на другой, начиная с красного.Тем не менее, когда я запускаю эту программу, она просто начинается с белого, а не красного, и при нажатии кнопок не меняется цвет круга, и я очень смущаюсь, почему.

from tkinter import *

def changeColor():
    test.itemconfig(circle, fill = "blue")

def changeColor2():
    test.itemconfig(circle, fill = "white")

root = Tk()
test = Canvas(root, width = 50, height = 50)
test.pack()
circle = test.create_oval(0, 0, 25, 25,fill="red")



button = Button(root,text="",command=changeColor(),bg= "blue")
button2= Button(root,text="",command=changeColor2(),bg= "white")
button.pack()
button2.pack()

root.mainloop()

1 Ответ

0 голосов
/ 24 февраля 2019

Из Wikibooks на Python

В Python возможны замыкания, потому что функции являются первоклассными объектами.Функция - это просто объект функции типа.Быть объектом означает, что можно передать функциональный объект (не вызванную функцию) в качестве аргумента или в качестве возвращаемого значения или назначить другое имя функциональному объекту.Уникальная функция, которая делает закрытие полезным, заключается в том, что вложенная функция может использовать имена, определенные в области действия родительской функции.

Синтаксис для передачи функции - это имя функции без скобок: command = changeColor

...