有沒有辦法在密鑰版本上進行<Return>
事件調用,而不是按?Tkinter <Return>密鑰發佈事件
如果您使用<KeyRelease>
,那麼event.char
對於任何特殊鍵都是空白的,而不僅僅是返回。
有沒有辦法在密鑰版本上進行<Return>
事件調用,而不是按?Tkinter <Return>密鑰發佈事件
如果您使用<KeyRelease>
,那麼event.char
對於任何特殊鍵都是空白的,而不僅僅是返回。
您可以明確設置上的回車鍵的釋放綁定:
要關閉自動重複的Xwindows下。
例如:
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'
:
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事件,即使你不實際釋放的關鍵。通過結合<KeyRelease-Return>
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