微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我在用 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 举报,一经查实,本站将立刻删除。