i am trying to make paint like app in turtle and tkinter. when i was only using turtle i made a program that lets you draw freely using click and drag. then i tried to make an interface and i switched to raw turtle. now when i click the turtle moves and when i drag the turtle it draws but when i click and drag it only moves. i do not know how to fix it
first code in turtle only :
import turtle turtle.tracer(False) turtle.hideturtle() def draw(x, y): t.ondrag(None) t.down() t.goto(x, y) t.up() turtle.update() t.ondrag(draw) def move(x, y): turtle.onscreenclick(None) t.goto(x, y) turtle.onscreenclick(move) turtle.update() t = turtle.Turtle() t.shape("circle") t.pencolor('black') t.fillcolor("") t.up() t.pensize(6) t.turtlesize(1000000, 1000000) ts = turtle.getscreen() t.ondrag(draw) turtle.onscreenclick(move) turtle.update() turtle.listen() turtle.done()code with turtle and tkinter :
import tkinter as tk from functools import partial from turtle import TurtleScreen, RawTurtle def draw(x, y): turtle.ondrag(None) turtle.pendown() turtle.goto(x, y) turtle.penup() screen.update() turtle.ondrag(draw) def move(x, y): screen.onclick(None) turtle.goto(x, y) screen.onclick(move) screen.update() def set_color(color): global pen_color pen_color = color turtle.pencolor(color) screen.update() # --- add widgets --- root = tk.Tk() canvas = tk.Canvas(root, width=500, height=500) canvas.pack(side='right', expand=True, fill='both') frame = tk.Frame(root) frame.pack(side='left', fill='y') tk.Label(frame, text='COLORS').grid(column=0, row=0) tk.Button(frame, bg='red', width=10, command=partial(set_color, 'red')).grid(column=0, row=1) tk.Button(frame, bg='yellow', width=10, command=partial(set_color, 'yellow')).grid(column=0, row=2) tk.Button(frame, bg='green', width=10, command=partial(set_color, 'green')).grid(column=0, row=3) tk.Button(frame, bg='blue', width=10, command=partial(set_color, 'blue')).grid(column=0, row=4) tk.Button(frame, bg='black', width=10, command=partial(set_color, 'black')).grid(column=0, row=5) screen = TurtleScreen(canvas) screen.tracer(False) pen_color = 'black' turtle = RawTurtle(screen) # turtle.hideturtle() turtle.shape("circle") turtle.penup() turtle.pensize(5) turtle.color(pen_color, screen.bgcolor()) turtle.ondrag(draw) screen.onclick(move) screen.update() screen.listen() screen.mainloop()from what i understand ( i might be wrong i just started learning python ) the listen function should be the one collecting the events. the turtle done function should keep the turtle alert in the first version, but in the second the mainloop keeps the whole app alert and i cant use done anymore. the problem might have happened somewhere in those functions i think.i tried using listen, update and done in various places but nothing seems to change ( or even brake it just works as before )