2009-11-19 38 views
5

我已經暫停了一個腳本讓我們說3500秒使用time.sleep(3500)的時間模塊。在Python中掃描按鍵

現在,我的目標是在腳本處於睡眠狀態時掃描按鍵,我的意思是在這條線上。

它像我想如果按下一個「按鍵按Ctrl + R」重新啓動腳本。

對於離..考慮

#!/usr/bin/python 
import time 
print "Hello.. again" 
while True: 
    time.sleep(3500) 

現在在代碼是在最後一行,如果我按Ctrl + R,我想重新打印「你好..再次」線。

+4

你可能想看看這個網站是如何工作的。到目前爲止,你沒有投一票,也沒有接受一個答案。這是不好的形式。 – Stephan202 2009-11-19 12:35:28

+0

Duplicate:http://stackoverflow.com/questions/694296/detect-in-python-which-keys-are-pressed – 2009-11-19 14:40:52

+0

對不起。這是非常新的論壇。 – 2009-11-19 16:30:11

回答

4

我知道這並不能完全回答你的問題,但你可以做到以下幾點:

  1. 把程序邏輯代碼的功能,說perform_actions。程序啓動時調用它。
  2. 代碼運行後,開始監聽interrupt
    • 即,用戶必須按CTRL + Ç代替CTRL + - [R
  3. 收到中斷後,等待半秒;如果ctrl + c再次按下,然後退出。
  4. 否則,重新啓動代碼。

因此,只要你想CTRL +[R表現一箇中斷的行爲。兩個快速中斷退出程序。

import time 

def perform_actions(): 
    print("Hello.. again") 

try: 
    while True: 
     perform_actions() 
     try: 
      while True: time.sleep(3600) 
     except KeyboardInterrupt: 
      time.sleep(0.5) 
except KeyboardInterrupt: 
    pass 

使用的信號(在這種情況下SIGINT)的一個很好的副作用是,你也通過其他手段,例如重新啓動腳本通過運行kill -int <pid>

+0

與ctrl + r的解決方案會更好;) – tuergeist 2009-11-19 14:05:25

+0

你..這也是不壞。我的意思是現在解決了我的問題。但是,我想知道如何與任何其他組合一起使用... 如果有人知道,請繼續回覆.. – 2009-11-19 16:32:42

-2

for循環睡眠時間3500 1秒,如果密鑰每次

# sleep for 3500 seconds unless ctrl+r is pressed 
for i in range(3500): 
    time.sleep(1) 
    # check if ctrl+r is pressed 
    # if pressed -> do something 
    # otherwise go back to sleep 
按下檢查
+1

爲什麼我不必要地運行循環?我們如何在程序處於睡眠狀態時進行此操作。 – 2009-11-19 17:48:08

+0

答案離解決方案很遙遠。沒有解決。 – tuergeist 2013-06-10 21:08:57

3

您可能需要使用Tkinter的{需要X :(}

#!/usr/bin/env python 

from Tkinter import * # needs python-tk 

root = Tk() 

def hello(*ignore): 
    print 'Hello World' 

root.bind('<Control-r>', hello) 
root.mainloop() # starts an X widget 

這個腳本打印Hello World到控制檯如果按ctrl+r

又見Tkinter keybindings。另一種解決方案使用GTK可以發現here

+0

由於Tkinker不是標準模塊。我希望有一個不同的解決方案。 – 2009-11-21 11:10:40

+0

IFAIK沒有使用X或小部件庫的綁定鍵。所以你必須使用qt,gtk或tkinter :)你可能想要訪問http://kaizer.se/wiki/python-keybinder/,它提供了一個python的鍵綁定機制。但這不是標準的Python也。 – tuergeist 2009-11-22 09:41:47