2011-08-31 26 views
0

我想在python中做一個關鍵事件。我認爲,與詛咒模塊我可以做到這一點,但我不知道如何。請幫幫我。如何使用python curses模塊創建關鍵事件?

如何使用鍵盤按鍵來調用功能。比如,如果按下「空格」鍵做某事,如果按下「c」鍵顯示圖像,按「s」鍵保存圖像。我的問題只是做出這個關鍵事件。 我使用Linux o.s.

我試圖用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中很新。

謝謝你的答案

+0

不要使用urwid和Tkinter在一起,壞主意。他們的事件循環可能會發生衝突 –

回答

2

生成按鍵:

在Windows上,很容易產生按鍵。在Linux上有點難度:

獲得一個按鍵:

使用詛咒的有點多了這種情況。

+1

我可能在這裏錯了,但我認爲OP在詢問是否通過腳本發起了一個按鍵事件,而不是處理用戶的按鍵事件。 – wim

+0

謝謝,重做了答案。 –

0

活動,如你所描述通常與某種GUI容器(窗口,畫布,畫框,你有什麼)這樣的相關「事件」真的沒有沒有某種圖形用戶界面的任何意義。我可以給出更詳細的答案,如果你會說你使用的是什麼GUI框架,但除此之外,這裏有描述如何處理事件的鏈接使用TKInterWxPython

+0

我認爲他的意思是「通過在tty上使用原始模式閱讀按鍵」。 – Keith