Kullanıcının 20 saniye boyunca herhangi bir tuşa basmasını nasıl bekleyebilirim? Yani İletiyi gösteriyorum ve 20 sn sayar, 20 sn geçilirse VEYA herhangi bir tuşa basılırsa kod çalışmaya devam eder. Bunu python ile nasıl yapabilirim?Kullanıcının herhangi bir tuşa basması 20 saniye boyunca nasıl beklenir?
cevap
Windows üzerinde iseniz:
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
Biraz küçük, ama birileri sırasında bir karakter vurursa Uyku, sebepsiz bekliyorsun. Uykudan ziyade zamanı karşılaştırmak en iyisidir. – Logan
Haklısınız. Zaman karşılaştırmak için güncellendi. –
(Uyarı: denenmemiş kodu)
şey gibi:
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"
düzenlemek bkz: http://docs.python.org/library/select.html
Seçme modülünü bilmiyordum, bu bilmek güzel. Pencerelerde test ettim ve işe yaramadı. Belgelerden: Not: Windows'taki dosya nesneleri kabul edilemez, ancak soketler vardır. Windows'ta, temel olan select() işlevi, WinSock kitaplığı tarafından sağlanır ve WinSock kaynaklı olmayan dosya tanıtıcılarını işlemez. –
@BrendenBrown: Wow, hiçbir fikrim yoktu. Güncelleme için teşekkür ederim (bu, Windows geliştirmedeki kafa karışıklığımı kızdırıyor ...) – gsk
olası bir Çözümkullanmaktır Değerleri kontrol etmek için, ama hoşuma gitmiyor, zamanımı harcıyor gibi hissediyorum. Sorunu işlemek için Linux sistemlerinde sinyal kullanabilirsiniz Öte yandan
. belli bir süre sonra, bir özel duruma neden olacak try
başarısız olur ve kod except
devam:
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 ''
kodu olduğunu uygulamak ardından, engellenmeyen girişi Look up here
- 1. Bir kullanıcının bir UITableViewCell'i 2 saniye boyunca basılıp basmadığını nasıl belirleyebilirim?
- 2. Bir işlev çağrısını 5 saniye boyunca nasıl geciktiririm?
- 3. Her 3 saniyede bir işlevi 15 saniye boyunca nasıl çağırabilirim?
- 4. Flex 4 Kullanıcının tuşa basıp basmadığını saptar
- 5. Kullanıcının Konumunu periyodik olarak 20 San. otomatik olarak
- 6. Rasgele zaman 0 ile 20 saniye arasında mı?
- 7. JQuery kullanarak bir elemanın üzerine 2 saniye boyunca geçerken bir tıklatmayı nasıl tetiklerim?
- 8. isset() Böyle bir sorunla karşı karşıya herhangi bir tuşa
- 9. nodejs içinde devam etmek için herhangi bir tuşa basın
- 10. Form Sayfadaki herhangi bir tuşa basıldığında FireFox'ta gönderilir.
- 11. Selenium'da bir sayfa yönlendirmesi nasıl beklenir?
- 12. Geri dönen bir yöntemde nasıl beklenir?
- 13. Bir dosyanın tamamen kopyalanması nasıl beklenir?
- 14. Proguard hataları artık başarıyla benim Android projelerin herhangi aktarabilirsiniz ADT 20 güncelledikten sonra ADT 20
- 15. Tüm asenkron işlemler nasıl beklenir?
- 16. Python'da son tuşa nasıl basılır?
- 17. 20 karakter
- 18. Bir sayfanın başka bir sayfaya 5 saniye boyunca yönlendirilmesi ve yeniden yönlendirilmesi
- 19. Eşzamansız bir yöntemin geri dönüş değeri nasıl beklenir?
- 20. C# .NET formunda bir tuşa nasıl basılır
- 21. CakePHP yabancı bir tuşa nasıl geçilir
- 22. iOS'ta gpuimage'i kullanarak video üzerinden pixellate efekti birkaç saniye boyunca nasıl uygulanır?
- 23. Her bir tuşa basmadan özel validator'yu durdurma
- 24. Java ile bir tuşa basın
- 25. AutoHotKey tuşa kesme döngüsü
- 26. VBA Excel: Bir saniyeye bir saniye ekleyin
- 27. Xlib uygulamasında VSYNC için nasıl beklenir?
- 28. Belirtilen süre boyunca iPhone'u titreşim
- 29. io.popen - Lua'da işlemin tamamlanması nasıl beklenir?
- 30. Devam etmeden önce JFrame'in kapanması nasıl beklenir?
alınmıştır Bir süre döngüsünde, başlangıç saatine göre geçerli zamanı kontrol eder. – Lanaru
@Lanaru: Neden bir süre döngü? Kötü bir beklemede olan kötü bir durum gibi görünüyor. Bir zaman aşımı ile select() 'gibi bir şey aynı şeyi yapabilir. – gsk
herhangi key_ ben Pygame kullanarak çapraz platform cevabı gördün herhangi string_ – moooeeeep