2009-11-19 95 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