Help! Изучаю Canvas и Tkinter. Суть кода: при нажатии на одну картинку она сменяется другой. Всё работает, но как только я решил сделать так, чтобы при нажатии на вторую картинку, которая заменила первую, снова появлялась первая (типа цикл) столкнулся с проблемой:
c.tag_bind(imag1, 'Button-1',
p2) - эта строка не может вызвать функцию без аргументов т.е. p2() , она вызывает её только если использовать p2(event) - это дело известное.
Чтобы скрипт работал мне нужно в данном случае вызвать функцию p1() перед root.mainloop(), и если я вызываю "def p1():" через "p1()" - функция вызывается, однако потом выдаёт ошибку, когда уже конструкция c.tag_bind(imag2, 'Button-1', p1) пытается вызвать функцию p1() снова (она не может; причина описана выше)
И главный затык в том, что если я вызываю функцию "def p1(event)" через "p1(event)" выдаёт ошибку (NameError: name 'event' is not defined)
Как вызвать функцию в данном случае, как запустить скрипт? Или как объявить "event" ведь в моём скрипте она используется только как издержка особенностей вызова через bind?
И да "command=p1" решило бы этот вопрос, но это не кнопка и здесь оно не работает, может есть аналоги?
p.s. "Да, талантом объяснять попонятней обделён)"
root = Tk()
root.title("LH")
c = Canvas(root, width=500, height=500)
c.pack()
def p1(event): #или def p1():
image1 = Image.open("C://...1.png")
photo1 = ImageTk.PhotoImage(image1)
c.image = photo1
imag1 = c.create_image(200, 250, image=photo1)
c.tag_bind(imag1, '<Button-1>', p2)
def p2(event):
image2 = Image.open("C://...2.png")
photo2 = ImageTk.PhotoImage(image2)
c.image = photo2
imag2 = c.create_image(200, 250, image=photo2)
c.tag_bind(imag2, '<Button-1>', p1)
p1() #или p1(event)
root.mainloop()