Zeichenfeld
Verfasst: Samstag 18. März 2017, 16:47
Wie mache ich mit Tkinter ein Fenster, in dem man mit einem Pinsel als Mauszeiger einer bestimmten Dicke in ein Zeichenfeld zeichnen kann?
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
import tkinter as tk
class Application(tk.Tk):
def __init__(self,**kwargs):
tk.Tk.__init__(self,**kwargs)
self.canvas = tk.Canvas(self,bg='white',cursor='pencil')
self.canvas.pack()
self.line_default = { 'width' : 5, 'fill' : 'blue' }
self.poly_coord = []
self.paint_enabled=False
self.canvas_item = None
self.canvas.bind('<Button-1>',self.begin_paint)
self.canvas.bind('<ButtonRelease-1>',self.stop_paint)
def begin_paint(self,event):
self.paint_enabled = True
xc,yc = self.get_coord()
self.poly_coord = [xc,yc,xc,yc]
self.canvas_item = self.canvas.create_line(*self.poly_coord)
self.canvas.itemconfig(self.canvas_item,**self.line_default)
self.mouse_move_freehand()
def stop_paint(self,event):
self.paint_enabled = False
def get_coord(self):
xw = self.canvas.winfo_pointerx()-self.canvas.winfo_rootx()
yw = self.canvas.winfo_pointery()-self.canvas.winfo_rooty()
return self.canvas.canvasx(xw), self.canvas.canvasy(yw)
def mouse_move_freehand(self):
if self.paint_enabled:
step = 10
xc,yc = self.get_coord()
self.poly_coord.append(xc)
self.poly_coord.append(yc)
self.canvas.coords(self.canvas_item,*self.poly_coord)
self.canvas.after(step,self.mouse_move_freehand)
Application().mainloop()