2011-11-10 32 views

答えて

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'ていることを確認できます。あなたが自動キーリピートを持っている場合は、物理的にキーを離していない場合でも、その後、KeyReleaseイベントがあることを

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() 

注意を。


Xウィンドウの下にオートリピートをオフにするには:

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

関連する問題