【问题标题】:How to use python curses module to create a key event?如何使用 python curses 模块创建关键事件?
【发布时间】:2011-11-08 00:24:29
【问题描述】:

我正在尝试在 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的新手。

谢谢你的回答

【问题讨论】:

  • 不要同时使用 urwid 和 Tkinter,这是个坏主意。他们的事件循环可能会发生冲突。

标签: python curses


【解决方案1】:

生成按键:

在 Windows 上,生成按键非常容易。在 Linux 上有点困难:

获得按键:

在这种情况下,诅咒的使用有点多。

【讨论】:

  • 我在这里可能错了,但我认为 OP 是在询问通过脚本触发按键事件,而不是处理来自用户的按键事件。
【解决方案2】:

您所描述的事件通常与某种 GUI 容器(窗口、画布、框架、您有什么)相关联,因此如果没有某种 GUI,“事件”实际上没有任何意义。如果您能说出您使用的是什么 GUI 框架,我可以给出更详细的答案,但除此之外,这里有描述如何使用 TKInterWxPython 处理事件的链接

【讨论】:

  • 我认为他的意思是通过在 tty 上使用原始模式来“读取按键”。
猜你喜欢
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多