Вопрос

Я пытаюсь на дому назначения для домашнего задания для реализации Саймона говорит в Python.Я пытаюсь сделать это, используя библиотеку черепахи (требование).

Тем не менее, я запускаю в камеру блок в том, что, хотя я могу получить экран, чтобы зарегистрировать события, щелчка (в настоящее время просто печатает координаты x, y), я не могу получить его, чтобы дождаться события клики.

.

В частности, что я планирую делать, указывает области на экране, что, когда они нажимают в этом месте, он считается, как если бы они нажали кнопку.Очистить экран и игра делает что угодно.

Однако в экспериментах при попытке получить работу «кнопки» все, что она делает, это установлено, что она печатает его координаты X, Y, но остальная часть заканчивается программа.Не дождался, пока пользователь нажимает что-нибудь.Я попробовал метод блокировки ...

while clicked == False:
    pass
.

или

while clicked == False:
    time.sleep(1)
.

Но оба метода зависает программу, пока я не прерванию вручную, а затем распечатает клики.

Я где-то пропускаю вариант?

Это было полезно?

Решение 2

Так что после обширного поиска не обязательно не обязательно приостановить выполнение кода в Python при использовании черепахи, чтобы дождаться события клики.Может быть, в ТК, я мог бы сделать это, но не в черепахе.

Однако есть способ обойти это.В качестве примера.Способ устанавливает поддельные кнопки на экране, устанавливает событие Click и завершается.Событие Click при нажатии вызывает следующий метод, необходимый для выполнения.Поэтому, пока кнопка нажмется, фактический код ничего не делает, кроме остается в памяти для использования.

так же конкретно. 1. Создайте кнопку «». 2. Разве ваша программа ведет себя нормально, пока она не должна дождаться события клики. 3. Настройте на экране нажмите (или на черепахе) таким образом, когда кнопка «кнопка» нажимается на следующую часть кода.

Специальная нота.Обеспечение кода не может зависеть от ожидания события щелчка для дальнейшего в коде.Вместо этого нажмите кнопку следующую часть выполнения вашего кода.

Другие советы

У них нет кнопок, но у них есть обратные вызовы для кликов. Кроме того, вы должны использовать onclick для Screen для обнаружения общих щелчков и генеракодицетагкод для генеракодицетагкода для обнаружения нажатия в черепах.Например, вы можете сделать 4 большие черепахи с разными цветами с помощью динамической формы.

Также черепаха основана на TK, поэтому вы должны знать о таких вещах, как onclick

Следующая программа дает некоторые советы для Python 2.7.5.

import turtle as t
from random import randint

class MyTurtle(t.Turtle) :

    def __init__(self,**args) :
        t.Turtle.__init__(self,**args)

    def mygoto(self,x,y) :
        t1.goto(x,y)
        print x,y

    def randonics(self,x,y) :
        self.left(randint(90,270))

def minegoto(x,y) :
    print x,y
    t1.goto(x,y)

wt=t.Screen()
t1=MyTurtle()
wt.register_shape("big",((0,0),(30,0),(30,30),(0,30)))
t1.shape("big")
wt.onclick(t1.mygoto,btn=1)
wt.onclick(minegoto,btn=2)
t1.onclick(t1.randonics,btn=3)
t1.goto(100,100)

t.mainloop()
.

Вы можете сделать функцию, зарегистрированную в OnClick (), тестируйте положение x, y.Если это внутри какого-то региона, вы делаете все, что вы должны.

Я не вижу разницу между тем, что вы хотите сделать, и что делает этот код, модификация положения черепахи - это просто пример, вы можете сделать что угодно, когда щелчок захвачен onclick (), даже запустить нитьЕсли вам это действительно нужно (используя Создание потоков в Python )

import turtle as t
from random import randint
from threading import Thread
from time import sleep

def threaded_function(arg,t1):
    for i in range(arg):
        print "running",i
        sleep(1)
        t1.forward(i*10)



def minegoto(x,y) :
    print x,y
    t1.goto(x,y)
    thread = Thread(target = threaded_function, args = (10,t1 ))
    thread.start()
    thread.join()
    print "thread finished...exiting"

wt=t.Screen()
t1=t.Turtle()
wt.register_shape("big",((0,0),(30,0),(30,30),(0,30)))
t1.shape("big")
wt.onclick(minegoto,btn=1)
t1.goto(100,100)

t.mainloop()
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top