キーリリースで<Return>
イベントコールを行う方法はありますか?Tkinter <Return>イベントのキーリリース
<KeyRelease>
を使用すると、event.char
は返品だけでなく、特別なキーでは空白になります。
キーリリースで<Return>
イベントコールを行う方法はありますか?Tkinter <Return>イベントのキーリリース
<KeyRelease>
を使用すると、event.char
は返品だけでなく、特別なキーでは空白になります。
あなたが明示的に<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"
あなたは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()
を返す独自のバインディングを作成することができ、リターンキーのプレスに起こるために何かをしたくない場合ありがとう、これは、自動キーのリピートを無効にすることが可能かどうか知っていますか? – Ferguzz