사용자가 20 초 동안 아무 키나 누를 때까지 기다릴 수 있습니까? 나는. 메시지를 보여 주며 20 초를 카운트합니다. 코드는 20 초가 경과되거나 사용자가 아무 키를 누르면 실행을 계속합니다. 파이썬으로 어떻게 할 수 있습니까?사용자가 어떤 키를 누르기까지 20 초 동안 기다리는 방법?
답변
Windows에서 경우 :
def wait_for_user(secs):
import msvcrt
import time
start = time.time()
while True:
if msvcrt.kbhit():
msvcrt.getch()
break
if time.time() - start > secs:
break
조금 사소하지만 누군가가 캐릭터를 친다면 수면, 너는 아무 이유없이 기다리고있어. 수면보다 시간을 비교하는 것이 가장 좋습니다. – Logan
네 말이 맞아. 시간을 비교하도록 업데이트되었습니다. –
(경고 : 테스트되지 않은 코드)
뭔가 같은 :
import sys
import select
rlist, _, _ = select.select([sys.stdin], [], [], timeout=20)
if len(rlist) == 0:
print "user didnt input anything within 20 secs"
else:
print "user input something within 20 secs. Now you just have to read it"
select 모듈에 대해 알지 못했습니다. 알고있는 것이 좋습니다. 방금 창문에서 테스트 해봤는데 작동하지 않았습니다. 문서에서 : 참고 : Windows의 파일 개체는 허용되지 않지만 소켓은 있습니다. Windows에서 기본 select() 함수는 WinSock 라이브러리에서 제공되며 WinSock에서 시작하지 않은 파일 설명자를 처리하지 않습니다. –
@BrendenBrown : 와우, 나는 몰랐다. 업데이트 해 주셔서 감사합니다 (Windows 개발에 대한 혼란이 더해집니다 ...) – gsk
한 가지 해결책은을 사용하는 것입니다.값을 확인하려고하지만 맘에 안 든다. 내 시간을 낭비하고있는 것처럼 느껴진다.
반면에 Linux 시스템에서 신호를 사용하여 문제를 처리 할 수 있습니다. 일정 시간 후, 계산 한 예외가 발생 될 것이다 try
실패하고 코드 except
계속 :
import signal
class AlarmException(Exception):
pass
def alarmHandler(signum, frame):
raise AlarmException
def nonBlockingRawInput(prompt='', timeout=20):
signal.signal(signal.SIGALRM, alarmHandler)
signal.alarm(timeout)
try:
text = raw_input(prompt)
signal.alarm(0)
return text
except AlarmException:
print '\nPrompt timeout. Continuing...'
signal.signal(signal.SIGALRM, signal.SIG_IGN)
return ''
코드는 실행 한 후, 비 - 블로킹 입력 찾아 here
- 1. SQL Server가 20 초 동안 처리를 중지합니다.
- 2. 콘솔 입력을 C#에서 15 초 동안 기다리는 방법
- 3. 20 초 동안 사용하지 않으면 jQuery 페이드 객체
- 4. HttpRespons를 기다리는 동안 ProgressDialog를 표시하는 방법?
- 5. 키 누르기까지 JavaScript 실행
- 6. 플래시 게임마다 20 초 지연됩니다.
- 7. 5 초 동안 소리를내는 방법
- 8. 사용자 입력을 기다리는 동안 시간 간격을 캡처하는 방법은 무엇입니까?
- 9. ajax 콜백을 기다리는 동안 javascript를 실행하는 방법
- 10. 수() 쿼리 복용 20 초 이상
- 11. 2 초를 기다리는 방법
- 12. 사용자가 20 분 동안 비활성 상태이면 세션을 종료하고 싶습니다. PHP
- 13. 분할하는 동안 외래 키를 처리하는 방법
- 14. x 초 동안 setontouchlistener
- 15. 웹 요청을 특정 간격 동안 기다리는 방법?
- 16. 20 초 후에 자동으로 doc 파일 저장
- 17. 방화벽은 rtmp 플래시 플레이어에서 20 초 지연시킵니다.
- 18. 스칼라 REPL ~ 시작시 20 초 -이게 정상입니까?
- 19. 코알라 응답 시간. 응답 대기 20 초
- 20. MySQL 쿼리 최적화, 거의 20 초 걸립니다!
- 21. WCF 통화가 20 초 걸리는 것
- 22. 알람을 기다리는 동안 코드/데이터에 어떤 변화가 발생합니까?
- 23. 기다리는 동안 쓰레드를 일시 중지하면 어떤 이점이 있습니까?
- 24. 기다리는 동안 무언가를하는 멀티 스레딩
- 25. x 초 동안 UIActivityIndicator 표시
- 26. 사용자가 UITableViewCell을 2 초 동안 눌렀는지 어떻게 확인할 수 있습니까?
- 27. 페이지를로드하는 동안 몇 밀리 초 동안 이미지를 숨기는 방법.
- 28. 몇 초 동안 이미지 표시
- 29. n 초 동안 올바르게 대기하는 방법
- 30. 5 초 동안 Jframe을 설정하는 방법
에서 촬영 한 while 루프에서 시작 시간과 비교하여 현재 시간을 확인합니다. – Lanaru
@ 라 나루 : while while loop? 바쁜 대기의 나쁜 경우 인 것 같습니다. 타임 아웃과 함께'select()'와 같은 것은 같은 일을 할 수 있습니다. – gsk
_ 임의의 키를 누르는 것은 같지 않습니다 _input 모든 문자열 _ – moooeeeep