ich eine Anwendung bin der Gestaltung für in Python Pixel-Kunst zu schaffen. Ich habe es derzeit so, dass der Benutzer eine erforderliche Rastergröße (Breite * Höhe) angeben kann und es wird ein Raster der angegebenen Höhe erstellt, wobei jedes Rasterquadrat einen Punkt in einer 2D-Liste darstellt.Ändern der Farbe aller Leinwand Elemente (Rechtecke) durch einen Mausklick und Drag gedrückt (Tkinter)
I Tkinter Die Leinwand-Widget verwendet und es ist create_rectangle Verfahren das Raster zu zeichnen, wie der Codeauszug zeigt.
Ich möchte ein Planquadrat in der Lage sein zu klicken und die Maus zu ziehen, das ursprüngliche geklickt Planquadrat und alle diejenigen, die älter als durch meine Maus die Farbe wechseln gezogen werden.
Ein wenig Forschung führen mich auf der Leinwand tag_bind und binden, aber keiner von ihnen scheint in der Lage zu sein, mir zu erlauben, die Drag-Funktionalität zu implementieren, würde Ich mag. Die Methode event.widget.findclosest ist sehr ungenau.
Hier ist der Code I ohne jeden Zugriff auf die Funktion OnClick das Raster zu zeichnen sind.
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
nicht vertraut w/tkinter aber etwas, was ich habe an anderer Stelle gesehen getan wird mouseup Tracking, MouseDown- zusammen mit mit einem Objekt Cursorposition folgen und mit der Kollisionserkennung zwischen Bürste und Objekt ist es vorbei. – CaffeineAddiction