使用两次单击绘制一个正方形,一次单击“开始”,另一次单击“边长度”

2024-05-15 03:39:53 发布

您现在位置:Python中文网/ 问答频道 /正文

如何编写代码,让turtle使用两次单击(一次单击设置起点,第二次单击定义的边长度)绘制一个类似于绘画的正方形

我想:点击一次设置一个正方形的中心;移动鼠标定义正方形的边长;再次单击以绘制具有定义的边长度和中心点的正方形。但我无法控制它;你有什么想法吗?我还试图创建一个调色板,这样我可以改变我的海龟绘图颜色,如果我点击其中一种颜色,但它不工作

这是我的密码:

import turtle



beni=turtle.Screen()
beni.setup(900,700,)

t=turtle.Turtle()

#color palette
t1=turtle.Turtle()
t1.shape("circle")
t1.color("blue")
t1.penup()
t1.setposition(250, 300)

t2=turtle.Turtle()
t2.shape("circle")
t2.color("red")
t2.penup()
t2.setposition(220,300)

t3=turtle.Turtle()
t3.shape("circle")
t3.color("green")
t3.penup()
t3.setposition(280, 300)


def funktion(x,y):
    t.color("green")
    t.pencolor("green")

    t3.onclick(funktion)


def funktion(x, y):
    t.color("blue")
    t.pencolor("blue")

    t2.onclick(funktion)


def funktion(x, y):
    t.color("red")
    t.pencolor("red")

    t1.onclick(funktion)

#freehandmode
def freehandmode(x, y):
    t.ondrag(None)
    t.goto(x, y)
    t.ondrag(freehandmode)

t.ondrag(freehandmode)

#linemode
class Drawer:
    def __init__(self):
       self.drawing = False

    def click(self, x, y):
        if self.drawing:
            turtle.down()
            turtle.goto(x, y)
            self.drawing = False
        else:
            turtle.up()
            turtle.goto(x, y)
            self.drawing = True

d = Drawer()
beni.onclick(d.click)

#squaremode





turtle.up()
turtle.mainloop()

Tags: self定义defcolort1t3turtlet2
1条回答
网友
1楼 · 发布于 2024-05-15 03:39:53

有几种方法可以做到这一点,我将通过交换事件处理程序来做到这一点,以便第一次和第二次单击具有不同的含义。我将使用圆(选择中心,然后是边)来保持我的示例简单,并留下一些几何图形供您思考:

from turtle import Screen, Turtle

def draw_circle(x, y):
    screen.onclick(None)
    center = turtle.position()
    turtle.setposition(x, y)
    turtle.setheading(turtle.towards(center) - 90)
    turtle.pendown()
    turtle.circle(turtle.distance(center))
    turtle.penup()
    turtle.clearstamps()
    screen.onclick(pick_center)

def pick_center(x, y):
    screen.onclick(None)
    turtle.setposition(x, y)
    turtle.stamp()
    screen.onclick(draw_circle)

turtle = Turtle()
turtle.hideturtle()
turtle.shape('circle')
turtle.shapesize(0.5)
turtle.penup()

screen = Screen()
screen.onclick(pick_center)
screen.mainloop()

相关问题 更多 >

    热门问题