【发布时间】:2019-08-12 01:08:55
【问题描述】:
我正在做一个 python 项目,用户可以在其中以笔记本页面图像作为背景的画布上书写和绘图。 我想要的是用户可以使用鼠标移动擦除画布上的绘图。 我尝试使用 create_line 来绘制白色,但这仅适用于背景为白色的情况,但对于我的背景,它看起来就像背景也被删除了。
def paint(self, event):
self.line_width = self.choose_size_button.get()
paint_color = self.color
if self.old_x and self.old_y:
self.c.create_line(self.old_x, self.old_y, event.x, event.y,
width=self.line_width, fill=paint_color,
capstyle=ROUND, smooth=TRUE,splinesteps=36,tags='rub')
if self.eraser_on :
self.c.delete(id(self.c.create_line))
self.old_x = event.x
self.old_y = event.y
def reset(self, event):
self.old_x, self.old_y = None, None
我也在 canvas.delete(event.x,event.y) 中使用了 event.y event.y 但这也不起作用
【问题讨论】:
-
我以前的做法是使用透明画布和背景图片。
-
这个 ".c.delete(id(self.c.create_line))" 毫无意义。 为什么你使用函数
.create_line的id来删除Canvas上的一个项目? -
@StefvanderZon 你是如何使用背景图片的?.... ......我实际上是 tkinter 和 python 的新手
-
@AbhishekGhanekar 您可以将 pygame 表面视为层。一切都停留在屏幕上,直到其他东西被绘制在它上面。这意味着擦除某些东西的方法是在它上面画一些东西。我做了一个简单的绘图应用程序给你解释我之前说的。
标签: java python tkinter tkinter-canvas