【发布时间】:2016-07-07 01:32:39
【问题描述】:
我正在设计一个用于在 Python 中创建像素艺术的应用程序。我目前拥有它,以便用户可以指定所需的网格大小(宽度 * 高度),它将创建一个指定高度的网格,每个网格方块代表 2D 列表中的一个点。
我使用 Tkinter 的画布小部件和它的 create_rectangle 方法来绘制网格,如代码摘录所示。
我希望能够点击一个方格并拖动我的鼠标,使原来点击的方格和所有被我的鼠标拖过的方格改变颜色。
一些研究使我找到了 canvas tag_bind 和 bind,但是这些似乎都不能让我实现我想要的拖动功能。 event.widget.findclosest 方法非常不准确。
这是我必须在不访问 onclick 函数的情况下绘制网格的代码。
def drawGrid(self):
for x in range(0, self.grid_width):
for y in range(0, self.grid_height):
x1 = (x * self.pixel_width)
x2 = (x1 + self.pixel_width)
y1 = (y * self.pixel_height)
y2 = (y1 + self.pixel_height)
self.grid[x,y] = self.canvas.create_rectangle(x1,y1,x2,y2)
self.canvas.update()
def rectangleOnClick(event):
#Colour the clicked square and all other squares that fall under mouse drag
【问题讨论】:
-
不熟悉 tkinter,但我在其他地方看到过跟踪 mouseup、mousedown 以及让对象跟随光标位置并使用画笔和对象之间的碰撞检测结束。
标签: python tkinter tkinter-canvas