Я новичок в Python, запускаю программу рисования с черепаховой графикой Python и загружаю ее на Github. p>
Я хочу сделать так, чтобы при нажатии левой кнопки мыши рисовалась линия. А когда я просто перемещаю мышь, не нажимая левую кнопку, черепаха просто следует за моим курсором.
Поэтому я погуглил и нашел какой-то странный, но, возможно, полезный код.
Например, когда я нажимаю левую кнопку мыши, черепаха не двигается, и я могу переместить черепаху, нажав левую кнопку мыши, но линия не рисуется...В любом случае, вот весь мой код. (Думаю, вам будет лучше показать весь код.)
Код: Выделить всё
from turtle import Screen
screen = Screen()
while True:
print('===========================')
print('*** Welcome to Pyint!!! ***')
print('___________________________')
print('*** Drawing With Turtle ***')
print('___________________________')
print('******* ver. 2.1.0 ********')
print('___________________________')
print('* Press Enter For Start!! *')
print('___________________________')
print('===========================')
import turtle as t
t.color('white')
t.bgcolor('black')
t.speed(0)
t.shape('circle')
t.pensize(5)
t.shapesize(2,2,2)
break
def colorsettings():
while True:
print('------------------------')
print('**** Color Settings ****')
print('------------------------')
chgpencolor = t.color(str(input('Color?:')))
savecolorsettings = str(input('Save the color settings? [y/n]:'))
if savecolorsettings == 'n':
continue
elif savecolorsettings == 'y':
print('-----------------------')
print('******** Saved ********')
print('-----------------------')
break
def thicknesssettings():
while True:
print('------------------------')
print('** Thickness Settings **')
print('------------------------')
chgpenthickness = t.pensize(int(input('Thickness?:')))
savethicknesssettings = str(input('Save the thickness settings? [y/n]:'))
if savethicknesssettings == 'n':
continue
elif savethicknesssettings == 'y':
print('-----------------------')
print('******** Saved ********')
print('-----------------------')
break
Moving, Dragging = range(2) # Codes about control the turtle start here.
def move_pen(x, y):
if state != Moving:
return
onmove(screen, None)
t.penup()
t.setheading(t.towards(x, y))
t.goto(x, y)
onmove(screen, move_pen)
def click_pen(x, y):
global state
t.onclick(None)
onmove(screen, None)
t.onrelease(release_handler)
t.ondrag(drag_handler)
state = Dragging
def release_handler(x, y):
global state
t.onrelease(None)
t.ondrag(None)
t.onclick(click_pen)
onmove(screen, move_pen)
state = Moving
def drag_handler(x, y):
if state != Dragging:
return
t.ondrag(None)
t.pendown()
t.setheading(t.towards(x, y))
t.goto(x, y)
t.ondrag(drag_handler)
def onmove(self, fun, add=None):
if fun is None:
self.cv.unbind('')
else:
def eventfun(event):
fun(self.cv.canvasx(event.x) / self.xscale, -self.cv.canvasy(event.y) / self.yscale)
self.cv.bind('', eventfun, add)
onmove(screen, move_pen)
t.onclick(click_pen) # End of codes about control the turtle
state = Moving
while True:
ipt = str(input())
if ipt == 'pencolor':
colorsettings()
elif ipt == 'penthickness':
thicknesssettings()
elif ipt == 'h':
t.goto(0,0)
elif ipt == 'c':
t.clear()
elif ipt == 'z':
t.undo()
elif ipt =='pu':
t.penup()
elif ipt =='pd':
t.pendown()
elif ipt == 'gg':
print('Are you really want to close the program? [y/n]')
elif ipt == 'n':
continue
elif ipt == 'y':
break
Если мой вопрос был грубым или недобрым по отношению к вам, я хочу извиниться.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/685 ... e-graphics