如何使用Python curses模块创建键事件?
我想在Python中实现一个键盘事件。我觉得可以用curses模块来做到这一点,但我不知道该怎么做。请帮帮我。
我想知道怎么在按下键盘某个键的时候调用一个函数。比如说,如果按下“空格”键就做某件事,如果按下“c”键就显示图片,如果按下“s”键就保存图片。我的问题就是怎么实现这个键盘事件。我现在使用的是Linux操作系统。
我试着用urwid模块,当我使用以下代码时:
import PIL
import Image
im=Image.open("im.tif")
imshow(im,cmap=cm.gray ,origin=1)
import urwid
def save(input):
if input in ('s'):
savefig("im2.png")
出现了这个错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
File "/usr/lib/pymodules/python2.6/matplotlib/backends/backend_tkagg.py", line 312, in key_press
FigureCanvasBase.key_press_event(self, key, guiEvent=event)
File "/usr/lib/pymodules/python2.6/matplotlib/backend_bases.py", line 1143, in key_press_event
self.callbacks.process(s, event)
File "/usr/lib/pymodules/python2.6/matplotlib/cbook.py", line 163, in process
func(*args, **kwargs)
File "/usr/lib/pymodules/python2.6/matplotlib/backend_bases.py", line 1703, in key_press
self.canvas.toolbar.save_figure(self.canvas.toolbar)
TypeError: save_figure() takes exactly 1 argument (2 given)
我哪里做错了?我该怎么让它工作?
ps:抱歉我不太懂,但我在Python方面非常新手。
谢谢你的回答。
2 个回答
2
生成按键输入:
在Windows上生成按键输入非常简单,但在Linux上就稍微复杂一些:
- 一种简单的方法是:
os.system('xvkbd -text "\\\\CP" ')
- 其他选择:
- 使用Python在Linux上模拟按键输入
- 在Linux上使用Python模拟按键事件
- 有一个有趣的模块,它使用内核模块:http://codegrove.org/projects/python-uinput
- 没有找到关于在curses中生成按键事件的相关信息。
获取按键输入:
在这个情况下使用curses有点复杂。
- 像这样:一次获取一个字符会简单一些。
- 比curses更简单的方法是使用urwid。
- 最后,curses的使用方法:http://docs.python.org/release/2.6/howto/curses.html#user-input