TKinter使用Checkbutton显示/隐藏canvas.line

时间:2017-11-29 21:49:03

标签: python tkinter tkinter-canvas

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

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()

我很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

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()