首页 > 解决方案 > tag_bind() 不适用于重叠的画布

问题描述

我正在创建一个教学环境,用户可以从下拉菜单中选择某些选项,例如相机或白板,这些选项作为带有自己对象的新画布添加到 GUI 中。这些对象通过左键单击使用 tag_bind 进行绑定,但是在单击时,该函数不会运行。

我尝试使用 tag_bind 与主画布进行绑定,但是由于对象是使用它自己的画布创建的,因此它无法找到该对象。

from tkinter import *
root = Tk() 

screen_width = root.winfo_screenwidth() - 15
screen_height = root.winfo_screenheight()

canvas = Canvas(root, width = screen_width, height = screen_height) 
canvas.pack() 

def add_item(event, remove):#this is the drop down menu
    dropbackground = canvas.create_rectangle(screen_width - 185, 70, screen_width - 55, 280, fill = "white")

    camera = canvas.create_text(screen_width - 120,85, text = "Camera", font = ("Segoe UI", 9))
    canvas.tag_bind(camera, "<Button-1>", lambda x: camera_func(x, False))
    line1 = canvas.create_line(screen_width - 170, 100, screen_width - 70, 100)

def camera_func(event):
   cam_canvas = Canvas(root, width = 500, height = 500, bg = "red")
   cam_canvas_object = canvas.create_window(500,500, window = cam_canvas)

   remove_button = PhotoImage(file = "cross.png")
   remove_button_object = cam_canvas.create_image(480,20, image = remove_button)
   remove_button.image = remove_button
   cam_canvas.tag_bind(remove_button_object, "<Button-1>", lambda x: camera_func(x, True))

我希望 remove_button_object 绑定到右键单击并使用给定的参数运行 camera_func 但是在单击 remove_button_object 时,绑定功能似乎不起作用

标签: pythontkintertkinter-canvas

解决方案


推荐阅读