在Python乌龟中找到onclick()事件位置

时间:2018-09-21 22:25:38

标签: python turtle-graphics

我找不到如何使用点击功能

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

import sys
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.title = "Hello Guy!!!"
        self.top = 100
        self.left = 100
        self.width = 680
        self.height = 500
        self.init()

    def init(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.top, self.left, self.width, self.height)


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())

2 个答案:

答案 0 :(得分:0)

函数中似乎没有使用x和y,但是这些坐标对于在特定位置绘制龟很重要。将x和y坐标与乌龟的x和y坐标进行比较,然后使用该信息将乌龟移动到该(x,y)坐标。然后,照常继续进行for循环。

答案 1 :(得分:0)

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

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()

enter image description here