【问题标题】:Is it possible to delete canvas object created with a function in Python?是否可以删除用 Python 中的函数创建的画布对象?
【发布时间】:2020-12-14 20:49:18
【问题描述】:

我想问一下是否可以在 Python 中删除使用方法创建的画布对象。
我的示例代码:

import tkinter
window = tkinter.Tk()
canvas = tkinter.Canvas(width=1000, height=600, bg="black")
canvas.pack()

def draw_yellow(x1, y1, x2, y2):
    canvas.create_line(x1, y1, x2, y2, fill="yellow")

def draw_white(x1, y1, x2, y2):
    canvas.create_line(x1, y1, x2, y2, fill="white")

line1 = draw_yellow(20, 300, 100, 300)
line2 = draw_white(20, 300, 100, 300)
line3 = draw_white(40, 200, 60, 200)
canvas.delete(line2)

但是canvas.delete(line2) 不适用于这种创建画布对象的方式。

是否可以通过函数绘制和删除对象?谢谢你的回答。

【问题讨论】:

    标签: python tkinter canvas tkinter-canvas


    【解决方案1】:

    画布的创建函数返回一个标识符,您可以使用它来删除它们。您所做的是正确的,只是您没有在函数中返回标识符。更改绘图函数,使其返回值如下:

    def draw_yellow(x1, y1, x2, y2):
        return canvas.create_line(x1, y1, x2, y2, fill="yellow")
    
    def draw_white(x1, y1, x2, y2):
        return canvas.create_line(x1, y1, x2, y2, fill="white")
    

    然后您将能够将这些值分配给一个变量(与您现在执行的方式相同)并将其作为参数传递给.delete() 方法:

    canvas.delete(line2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 2022-01-18
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      相关资源
      最近更新 更多