如何使用Python curses模块创建键事件?

0 投票
2 回答
4582 浏览
提问于 2025-04-17 00:59

我想在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 个回答

0

你提到的这种事件通常是和某种图形用户界面(GUI)容器有关的,比如窗口、画布、框架等等。所以“事件”这个概念如果没有图形界面就没什么意义。如果你能告诉我你使用的是哪个图形界面框架,我可以给你更详细的回答。不过如果不说的话,这里有一些链接,可以帮助你了解如何使用 TKInterWxPython 来处理事件。

2

生成按键输入:

在Windows上生成按键输入非常简单,但在Linux上就稍微复杂一些:

获取按键输入:

在这个情况下使用curses有点复杂。

撰写回答