Я пытаюсь изменить цвет линии, которую я рисую на холсте, с помощью функции change_red.После нажатия на кнопки, которые запускают функцию, значение из self.color меняется на красный, однако линия все еще рисует черным.
Я пытался изменить self.color в методе init, но он все равно рисуеттолько в черном цвете.
from PIL import Image, ImageTk
import tkinter as tk
class Window(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.color = "black"
menubar = tk.Menu(self)
self.config(menu=menubar)
operation_menu = tk.Menu(menubar, tearoff=0)
config_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="Change Color", menu=operation_menu)
menubar.add_cascade(label="Help", menu=config_menu)
config_menu.add_command(label="Exit", command=lambda: exit())
operation_menu.add_command(label="Red", command=lambda: self.change_red())
self.im = ImageTk.PhotoImage(Image.open("Test.png"))
self.geometry("500x500")
self.title("Image Editor")
self.resizable(False, False)
self.im_cv = tk.Canvas(width=300, height=200)
self.im_cv.pack(expand="yes", fill="both")
self.im_cv.create_image(50, 10, image=self.im, anchor="nw")
self.im_cv.bind("<B1-Motion>", self.paint)
def change_red(self):
self.color = "red"
def paint(self, event):
print(self.color)
x1, y1 = (event.x - 1), (event.y - 1)
x2, y2 = (event.x + 1), (event.y + 1)
self.my_canvas = self.im_cv.create_oval(x1, y1,x2,y2, fill=self.color, width=5)
window = Window()
window.mainloop()