Как заставить RawtlTurtle рисовать при нажатии и перетаскивании?Python

Программы на Python
Anonymous
Как заставить RawtlTurtle рисовать при нажатии и перетаскивании?

Сообщение Anonymous »

Я пытаюсь создать приложение, похожее на Paint, в черепахе и tkinter. Когда я только использовал черепаху, я создал программу, которая позволяет вам свободно рисовать, щелкая и перетаскивая. затем я попытался создать интерфейс и переключился на сырую черепаху. теперь, когда я нажимаю, черепаха движется, и когда я перетаскиваю черепаху, она рисует, но когда я нажимаю и перетаскиваю, она только движется. я не знаю, как это исправить.
только первый код в черепахе:

Код: Выделить всё

    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()
код с черепахой и 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()
насколько я понимаю (возможно, я ошибаюсь, я только начал изучать Python), функция прослушивания должна собирать события. функция «Черепаха готово» должна поддерживать предупреждение «Черепаха» в первой версии, но во второй основной цикл сохраняет предупреждение всего приложения, и я больше не могу использовать «Готово». Я думаю, что проблема могла возникнуть где-то в этих функциях.
Я пробовал использовать прослушивание, обновление и выполнение в разных местах, но, похоже, ничего не меняется (или даже не тормозит, все работает как раньше)

Подробнее здесь: https://stackoverflow.com/questions/783 ... k-and-drag

Вернуться в «Python»