Как я могу создать кнопку в черепахе? - PullRequest
1 голос
/ 24 января 2020

Как создать простую кнопку в черепахе, python, где, если вы щелкнете по ней, вы сможете задать ее для печати сообщений или выполнения других, более сложных действий.

Ответы [ 2 ]

1 голос
/ 25 января 2020

Вы можете встроить черепаху в tkinter, как предлагает @JoshuaNixon в своем комментарии, используя кнопки tkinter для управления холстом черепахи. Если вы хотите работать в автономной черепахе, я рекомендую использовать черепаху в качестве кнопки, поскольку они могут быть принудительно переведены в любую форму и / или цвет и имеют отдельные обработчики событий onclick, поэтому вам не нужно выясните, где пользователь щелкнул экран:

from turtle import Screen, Turtle

CURSOR_SIZE = 20
FONT_SIZE = 12
FONT = ('Arial', FONT_SIZE, 'bold')

def draw_onclick(x, y):
    turtle.dot(100, 'cyan')

button = Turtle()
button.hideturtle()
button.shape('circle')
button.fillcolor('red')
button.penup()
button.goto(150, 150)
button.write("Click me!", align='center', font=FONT)
button.sety(150 + CURSOR_SIZE + FONT_SIZE)
button.onclick(draw_onclick)
button.showturtle()

turtle = Turtle()
turtle.hideturtle()

screen = Screen()
screen.mainloop()

Обратите внимание, что Turtle.onclick() отличается от Screen().onclick - одно происходит только при нажатии на конкретный экземпляр c черепахи, тогда как другое происходит, когда щелкнув в любом месте экрана.

0 голосов
/ 24 января 2020

Чтобы создать простую кнопку, могут быть другие способы, но я так и делаю.

import turtle
def button(x,y):
    if x < 50 and x > -50 and y < 50 and y > -50:
        print("Your coordinates are: ("+str(x)+","+str(y)+").")
turtle.onscreenclick(button, 1, add=False)
turtle.done()

Чтобы объяснить это, кнопка - это просто функция, она пока не имеет ничего общего с реальной кнопкой. Оператор if там в основном берет переменные x, y, которые являются его параметрами, и проверяет, находятся ли они между двумя числами, в данном случае, координатами.

Функция onscreenclick принимает три параметра. Первый - это функция с двумя параметрами. Куда бы вы ни щелкнули всплывающее окно с черепахой, оно будет принимать координаты x, y того места, где вы щелкнули, и вставит его в функцию. Второе число. Это число относится к тому, как вы собираетесь щелкнуть по нему (например, щелкнуть правой кнопкой мыши, щелкнуть левой кнопкой мыши и т. Д. c.) В большинстве случаев это значение равно 1, поскольку 1 - щелчок левой кнопкой мыши. Наконец, третий параметр необходим, когда у вас есть несколько кнопок. Если вы создаете второй, третий и т. Д. c. Кнопка, и вы хотите создать новую кнопку без перезаписи предыдущей кнопки, вы пишете add = True. Если вы хотите, чтобы все предыдущие кнопки были отменены, вы пишете True. Итак, наконец, приведенный выше код будет печатать координаты места, где вы щелкнули, если они были между -50 и 50.

С этой функцией вы можете сделать много полезных вещей. Вы можете создать его как временную кнопку, чтобы помочь вам при написании с помощью черепахи, где «весь экран» - это большая кнопка, где она печатает координаты x, y того места, где вы щелкнули. Это может быть полезно для получения приблизительных координат места, где вы хотите, чтобы ваша черепаха набрала go дальше.

Или вы можете использовать его в качестве своего действительного кода, чтобы получить информацию от пользователя или как часть игры.

В общем, это простой способ создать кнопку, используя только черепашку и никакие другие модули, и обладает большой гибкостью.

Если есть какие-либо другие способы, использующие или не использующие черепаху, сложные или просто, пожалуйста, опубликуйте его как ответ.

ПРИМЕЧАНИЕ. По умолчанию вы не сможете "увидеть" кнопку. Однако, если вы хотите, вы можете заставить черепаху нарисовать контур кнопки или что-то в этом роде.

...