2011-11-10 1 views
3

키 릴리스에서 <Return> 이벤트 호출을 수행하는 방법이 있습니까?Tkinter <Return> 키 릴리스 이벤트

<KeyRelease>을 사용하는 경우 event.char은 반환이 아닌 특수 키에 대해 비어 있습니다. 당신은 자동 키 반복이있는 경우

class App(object): 
    def __init__(self, master, **kwargs): 
     self.master=master 
     master.bind('<KeyRelease>',self.release) 
    def release(self,event): 
     if event.keysym=='Return': 
      print('Return Release') 
root=tk.Tk() 
app=App(root) 
root.mainloop() 

주, 다음이 KeyRelease됩니다 이벤트가 경우에도 물리적으로 키를 공개하지 않는 것이 :

답변

8

명시 적으로 설정할 수있는 리턴 키의 출시에 바인딩을 <KeyRelease-Return>에 결합함으로써. 예를 들어

:

import Tkinter as tk 

class SampleApp(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.text = tk.Text(self) 
     self.text.pack() 
     self.text.bind("<KeyRelease-Return>", self.on_return_release) 

    def on_return_release(self, event): 
     self.text.insert("end", "boink! ") 

if __name__ == "__main__": 
    app = SampleApp() 
    app.mainloop() 

하는 당신은 아무것도 당신이 기본 바인딩을 제거하거나 반환 자신의 바인딩을 생성 할 수 있습니다 리턴 키의 눌러에서 발생하지 않으려면 "break"

3

당신은 event.keysym=='Return' 것을 확인할 수 있습니다.


Xwindows를 아래에 자동 반복 기능을 해제하려면 :

import Xlib.display as display 
import Xlib.X as X 
import Tkinter as tk 
import atexit 

@atexit.register 
def autorepeat(): 
    d=display.Display()  
    d.change_keyboard_control(auto_repeat_mode=X.AutoRepeatModeOn) 
    x=d.get_keyboard_control()  

class App(object): 
    def __init__(self, master, **kwargs): 
     self.master=master 
     master.bind('<KeyRelease>',self.release) 
    def release(self,event): 
     if event.keysym=='Return': 
      print('Return Release') 

d=display.Display() 
d.change_keyboard_control(auto_repeat_mode=X.AutoRepeatModeOff) 
x=d.get_keyboard_control() 
root=tk.Tk() 
app=App(root) 
root.mainloop() 
+0

이것에 대한 감사, 자동 키 반복을 비활성화 할 수 있는지 알고 있습니까? – Ferguzz