我在用 Python 海龟图形制作程序时遇到了一些问题

问题描述

我有一些关于我的代码的问题。

我是 Python 初学者。 然后我开始用 Python 海龟图形制作绘图程序并上传到 Github。

我想在单击鼠标左键时绘制线条。当我只移动鼠标而不点击左键时,乌龟只是跟着我的光标移动。

所以我用谷歌搜索并找到了一些有用的代码。但它的工作原理很奇怪。 我的意思是,它不能很好地工作。

喜欢,当我点击按钮时,乌龟不动。或者我可以通过单击按钮移动乌龟,但线不绘制...

无论如何,这里都是我的代码(我认为显示完整的代码对你更好......)。


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.ondrag(drag_handler)

def onmove(self,fun,add=None):

    if fun is None:
        self.cv.unbind('<Motion>')
    else:
        def eventfun(event):
            fun(self.cv.canvasx(event.x) / self.xscale,-self.cv.canvasy(event.y) / self.yscale)
        self.cv.bind('<Motion>',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

这是我第一次来这里。也是我的第一个问题。 如果我的问题对你粗鲁或不友好,我想说声抱歉。

谢谢:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)