我已经暂停了一个脚本,让我们说使用时间模块为时间为3500秒.sleep(3500)。
现在,我的目标是在脚本处于睡眠状态时扫描按键,我的意思是它在这一行。
就像我想要在按下“按下Ctrl + R”的情况下重启脚本一样。
对于前..考虑
#!/usr/bin/python
import time
print "Hello.. again"
while True:
time.sleep(3500)
现在代码在最后一行,如果按Ctrl + R,我想重新打印“Hello .. again”行。
答案 0 :(得分:4)
我知道这并不完全回答您的问题,但您可以执行以下操作:
perform_actions
。程序启动时调用它。因此,一个中断的行为与您希望 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>
。
答案 1 :(得分: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
答案 2 :(得分:-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