【问题标题】:Locate onclick() event location in Python turtle在 Python turtle 中定位 onclick() 事件位置
【发布时间】:2018-09-21 22:25:38
【问题描述】:

我不知道如何使用点击功能

我需要程序用三角形制作正方形,但只在我点击屏幕的地方,我似乎无法弄清楚为什么它只在中心做。

import turtle
import random
# create a turtle variable



t = turtle.Turtle()
screen = turtle.getscreen()
my_list =  [4,3,2,1]
# function to draw the square pattern
def draw_square_pattern(x,y): 
 for i in my_list:
  t.pencolor("blue")
  t.pendown()
  t.forward(100 * i/4)
  t.left(90)
  t.forward(100 * i/4)
  t.left(90)
  t.forward(100 * i/4)
  t.left(90)
  t.forward(100 * i/4)
  t.left(90)
  t.penup()
  t.forward(12.5)
  t.left(90)
  t.forward(12.5)
  t.right(90)
  t.penup()



# main function

# when click do function
screen.onclick(draw_square_pattern)

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    看起来你没有在函数中使用 x 和 y,但是这些坐标对于让海龟在特定位置绘制很重要。将 x 和 y 坐标与海龟的 x 和 y 坐标进行比较,然后使用该信息将海龟移动到该 (x, y) 坐标。然后,像往常一样继续你的 f​​or 循环。

    【讨论】:

    • 如何在我的函数中使用它?
    【解决方案2】:

    turtle 事件处理程序为您提供用户单击的位置作为事件处理程序的参数:

    def draw_square_pattern(x,y):
    

    但你忽略了它们。您可以简单地举起笔并转到位置 (x, y)。让我们重新编写你的代码来做这件事并稍微清理一下语法:

    from turtle import Screen, Turtle
    
    screen = Screen()
    
    turtle = Turtle()
    turtle.pencolor("blue")
    
    my_list = [4, 3, 2, 1]
    
    def draw_square_pattern(x, y):
        """ function to draw the square pattern """
    
        screen.onclick(None)  # disable handler inside handler!
    
        turtle.penup()
        turtle.goto(x, y)
    
        for i in my_list:
            turtle.pendown()
    
            for _ in range(4):
                turtle.forward(100 * i/4)
                turtle.left(90)
    
            turtle.penup()
    
            turtle.left(45)
            turtle.forward(17.7)
            turtle.right(45)
    
        screen.onclick(draw_square_pattern)
    
    screen.onclick(draw_square_pattern)
    screen.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2018-10-17
      • 1970-01-01
      相关资源
      最近更新 更多