首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >密钥释放时的Tkinter <Return>事件

密钥释放时的Tkinter <Return>事件
EN

Stack Overflow用户
提问于 2011-11-10 23:51:34
回答 2查看 14.7K关注 0票数 3

有没有办法在释放键时调用<Return>事件,而不是按键?

如果使用<KeyRelease>,那么对于任何特殊的键,event.char都是空的,而不仅仅是返回。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-11 11:12:11

通过绑定到<KeyRelease-Return>,可以在释放返回键时显式设置绑定。

例如:

代码语言:javascript
运行
复制
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()

如果您不希望在按return键时发生任何事情,您可以删除缺省绑定,或者创建自己的绑定来返回"break"

票数 10
EN

Stack Overflow用户

发布于 2011-11-11 01:55:12

您可以检查该event.keysym=='Return'

代码语言:javascript
运行
复制
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事件。

要在Xwindows下关闭自动重复,请执行以下操作:

代码语言:javascript
运行
复制
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()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8082277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档