TKinter show/hide canvas.line 带复选按钮

TKinter show/hide canvas.line with Checkbutton

所以我试图为一个项目编写代码,但我一天都没有取得任何进展,所以我决定问: 我的目标是有一个复选框(不一定要在开始时选中),如果选中则显示一条红线,但如果未选中则红线消失(这就是我挣扎的地方)。我已经设法使红线出现并选中按钮,但之后如果我取消选中,则没有任何反应并且红线仍然存在。这是我最近的尝试:

from tkinter import *
app = Tk()
canvas = Canvas(app, width=400, height=600)
canvas.pack()
redline = canvas.create_line(0, 100, 200, 50, fill="red")
def click(canvas=redline, *event):
       if var.get():
       redline
       else:canvas.delete(redline)
var = IntVar()
check = Checkbutton(app, text = "Redline", variable=var, command=click)
check.pack()
check.toggle()
app.mainloop()

感谢您提供的任何帮助。

command= 需要不获取参数的函数。

您必须重新创建行。

from tkinter import *

# --- functions ---

def click():
    global redline

    if not var.get():
        canvas.delete(redline)
    else:
        redline = canvas.create_line(0, 100, 200, 50, fill="red")

# --- main ---

app = Tk()

canvas = Canvas(app, width=400, height=600)
canvas.pack()

redline = canvas.create_line(0, 100, 200, 50, fill="red")

var = IntVar()
check = Checkbutton(app, text = "Redline", variable=var, command=click)
check.pack()
check.toggle()

app.mainloop()