Python » Страница 714
-Программирование на Python
Здравствуйте.Такая проблема: хочу в скрипт вставить функцию паузы с возможностью досрочного выхода из этой паузы, по нажатию горячих клавишь.
Желаемый результат: по нажатию на "С"- пауза в работе скрипта 100 сек. Досрочный выход из паузы , с возобновлением работы скрипта - зеленая клавиша.Вот этот кусок кода:
На деле получается: если во время работы скрипта нажать только "С", то после 100 сек. скрипт продолжает работать.Но если до истечения 100 сек. нажать зеленую, таймер , возможно, и прекращает отсчет , но скрипт работу не возобновляет. В чем моя ошибка? Помогите , пожалуйста.
Прикрепленный файл #1: (388 b)
-------------
добавлено в 02.13:
dyomash, как-то давно тоже с этим столкнулся. Если в after не указать вторым аргументом вызываемую функцию, то cancel() просто "вешает" программу, при указании же вызываемой функции after становится асинхронной и не останавливает дальнейшее выполнение кода на время спячки. Могу предложить сделать аналог "пробку":
def start_pause(time=100):
. . global flag
. . flag = time
. . pause()
def pause():
. . global flag
. . while flag:
. . . . e32.ao_sleep(1)
. . . . flag -= 1
def stop_pause():
. . global flag
. . flag = 0
типа того.
Да, и зачем 2 экземпляра класса для KeyCapturer?..
flag - имя переменной. Можно любое дать. Инструкцией global переменная объявляется глобальной. Проще говоря, изменившись внутри функции stop_pause, она прекратит цикл while в другой функции, т.к. переменная глобальна. В любом учебнике есть, это азы.
Может я где-то напорол, но результат тот-же : при попытке досрочно вывести из "спячки" -скрипт зависает
timer = e32.Ao_timer()
def sleep(sec):
. . e32.ao_sleep(sec)
def start_pause(time=100):
. . global flag
. . flag = time
. . pause()
def pause():
. . global flag
. . while flag:
. . . . e32.ao_sleep(1)
. . . . flag -= 1
def stop_pause():
. . global flag
. . flag = 0
def stop(key):
. . if (key == 8):
. . . . start_pause()
def go(key):
. . if (key == 63586):
. . . . stop_pause()
import keycapture
capturer1 = keycapture.KeyCapturer(stop)
capturer3 = keycapture.KeyCapturer(go)
capturer1.forwarding = 1
capturer3.forwarding = 0
capturer1.keys = [8]
capturer3.keys = [63586]
capturer1.start()
capturer3.start()
- «
- 1
- 2
- --
- 713
- 714
- 715
- --
- 974
- 975
- »

