canvas tkinter 上的删除方法
delete method on canvas tkinter
正在尝试通过单击创建的 "remove rect" 按钮删除 canvas 上的随机形状。但我的方法似乎不起作用。我一直收到这个错误,一定很小,但我似乎找不到它。
TypeError: removeRects() missing 1 required positional argument: 'canvas'
from tkinter import *
import random
root = Tk()
class Recta:
def __init__(self, height=60, width=80):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
def removeRects(self,canvas):
my_rect = self.canvas.create_rectangle(0,0,w,h,fill = "green")
self.canvas.delete(my_rect)
def create_buttons(self):
self.frame = Frame(root, bg='grey', width=400, height=40)
self.frame.pack(fill='x')
self.button1 = Button(self.frame, text='Rect', command=self.randomRects)
self.button1.pack(side='left', padx=10)
self.button2 = Button(self.frame, text='Remove Rect', command=self.removeRects)
self.button2.pack(side='left')
def randomRects(self):
w = random.randrange(300)
h = random.randrange(200)
self.canvas.create_rectangle(0, 0, w, h, fill= "green")
tes = Recta()
root.mainloop()
您必须跟踪您在集合中创建的矩形;然后从集合中提取 id
以删除一个矩形。
在这里,我创建了一个列表来聚合创建的矩形的 ID:self.canvas.create_rectangle(0, 0, w, h, fill='green')
returns 存储在集合中的 ID 号。
调用 delete
方法后,检索最后创建的矩形中的 id
(并从集合中删除)并用于 remove
来自 [=17] 的矩形=].
import tkinter as tk
import random
root = tk.Tk()
class Recta:
def __init__(self, height=60, width=80):
self.height = height
self.width = width
self.create_buttons()
self.canvas = tk.Canvas(root)
self.canvas.pack()
self.rects = []
def create_buttons(self):
self.frame = tk.Frame(root, bg='grey', width=400, height=40)
self.frame.pack(fill='x')
self.button1 = tk.Button(self.frame, text='Add Rect', command=self.randomRects)
self.button1.pack(side='left', padx=10)
self.button2 = tk.Button(self.frame, text='Remove Rect', command=self.removeRects)
self.button2.pack(side='left')
def removeRects(self):
if len(self.rects) > 0:
self.canvas.delete(self.rects.pop())
def randomRects(self):
w = random.randrange(300)
h = random.randrange(200)
self.rects.append(self.canvas.create_rectangle(0, 0, w, h, fill='green'))
tes = Recta()
root.mainloop()
这是带有 * import 的相同代码!
from tkinter import *
import random
root = Tk()
class Recta:
def __init__(self, height=60, width=80):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
self.rects = []
def create_buttons(self):
self.frame = Frame(root, bg='grey', width=400, height=40)
self.frame.pack(fill='x')
self.button1 = Button(self.frame, text='Add Rect', command=self.randomRects)
self.button1.pack(side='left', padx=10)
self.button2 = Button(self.frame, text='Remove Rect', command=self.removeRects)
self.button2.pack(side='left')
def removeRects(self):
if len(self.rects) > 0:
self.canvas.delete(self.rects.pop())
def randomRects(self):
w = random.randrange(300)
h = random.randrange(200)
self.rects.append(self.canvas.create_rectangle(0, 0, w, h, fill='green'))
tes = Recta()
root.mainloop()
正在尝试通过单击创建的 "remove rect" 按钮删除 canvas 上的随机形状。但我的方法似乎不起作用。我一直收到这个错误,一定很小,但我似乎找不到它。
TypeError: removeRects() missing 1 required positional argument: 'canvas'
from tkinter import *
import random
root = Tk()
class Recta:
def __init__(self, height=60, width=80):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
def removeRects(self,canvas):
my_rect = self.canvas.create_rectangle(0,0,w,h,fill = "green")
self.canvas.delete(my_rect)
def create_buttons(self):
self.frame = Frame(root, bg='grey', width=400, height=40)
self.frame.pack(fill='x')
self.button1 = Button(self.frame, text='Rect', command=self.randomRects)
self.button1.pack(side='left', padx=10)
self.button2 = Button(self.frame, text='Remove Rect', command=self.removeRects)
self.button2.pack(side='left')
def randomRects(self):
w = random.randrange(300)
h = random.randrange(200)
self.canvas.create_rectangle(0, 0, w, h, fill= "green")
tes = Recta()
root.mainloop()
您必须跟踪您在集合中创建的矩形;然后从集合中提取 id
以删除一个矩形。
在这里,我创建了一个列表来聚合创建的矩形的 ID:self.canvas.create_rectangle(0, 0, w, h, fill='green')
returns 存储在集合中的 ID 号。
调用 delete
方法后,检索最后创建的矩形中的 id
(并从集合中删除)并用于 remove
来自 [=17] 的矩形=].
import tkinter as tk
import random
root = tk.Tk()
class Recta:
def __init__(self, height=60, width=80):
self.height = height
self.width = width
self.create_buttons()
self.canvas = tk.Canvas(root)
self.canvas.pack()
self.rects = []
def create_buttons(self):
self.frame = tk.Frame(root, bg='grey', width=400, height=40)
self.frame.pack(fill='x')
self.button1 = tk.Button(self.frame, text='Add Rect', command=self.randomRects)
self.button1.pack(side='left', padx=10)
self.button2 = tk.Button(self.frame, text='Remove Rect', command=self.removeRects)
self.button2.pack(side='left')
def removeRects(self):
if len(self.rects) > 0:
self.canvas.delete(self.rects.pop())
def randomRects(self):
w = random.randrange(300)
h = random.randrange(200)
self.rects.append(self.canvas.create_rectangle(0, 0, w, h, fill='green'))
tes = Recta()
root.mainloop()
这是带有 * import 的相同代码!
from tkinter import *
import random
root = Tk()
class Recta:
def __init__(self, height=60, width=80):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
self.rects = []
def create_buttons(self):
self.frame = Frame(root, bg='grey', width=400, height=40)
self.frame.pack(fill='x')
self.button1 = Button(self.frame, text='Add Rect', command=self.randomRects)
self.button1.pack(side='left', padx=10)
self.button2 = Button(self.frame, text='Remove Rect', command=self.removeRects)
self.button2.pack(side='left')
def removeRects(self):
if len(self.rects) > 0:
self.canvas.delete(self.rects.pop())
def randomRects(self):
w = random.randrange(300)
h = random.randrange(200)
self.rects.append(self.canvas.create_rectangle(0, 0, w, h, fill='green'))
tes = Recta()
root.mainloop()