Как использовать модуль python curses для создания ключевого события? - PullRequest
0 голосов
/ 01 сентября 2011

Я пытаюсь сделать ключевое событие в Python.Я думаю, что с модулем curses я могу это сделать, но я не знаю как.Пожалуйста, помогите мне.

Как вызвать функцию нажатием клавиши клавиатуры.Например, если нажата клавиша «пробел», сделать что-то, если нажата клавиша «c», показать изображение, если нажата клавиша «s», сохранить изображение.Моя проблема только в том, чтобы сделать это ключевое событие.Я использую Linux OS

Я пытался использовать модуль 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 голосов
/ 01 сентября 2011

Создание нажатия клавиш:

В Windows довольно легко генерировать нажатия клавиш.В Linux немного сложнее:

Получение нажатия клавиши:

Использование проклятий немного в этом случае.

0 голосов
/ 01 сентября 2011

События, которые вы описываете, обычно связаны с каким-либо графическим контейнером GUI (окно, холст, рамка, что у вас есть), поэтому «события» действительно не имеют никакого смысла без какого-либо графического интерфейса пользователя. Я мог бы дать более подробный ответ, если бы вы сказали, какую платформу GUI вы используете, но, за исключением этого, вот ссылки, описывающие, как обрабатывать события, используя TKInter и WxPython

...