control-b:是保留的吗?

时间:2011-06-30 14:41:10

标签: python tkinter

当我在python / tkinter中编写并绑定到Ctrl-b的函数表现异常时,我感到很惊讶(具体:它丢失了所选文本的值,因此text.index(SEL_FIRST)未定义)。< / p>

我很惊讶,在改变了不可能的东西之后,我将它绑定到别的东西 - 而且它起作用了!

我搜索但没有找到任何东西:Control-b绑定到tkinter中的默认值???

的Alessandro

2 个答案:

答案 0 :(得分:0)

如果您正在谈论文本小部件,请从official tk text widget documentation

开始
  

“左右键移动   插入光标一个字符到   左还是右;他们也清楚了   文本中的选择... Control-b和   Control-f的行为与Left和   对,分别。“

答案 1 :(得分:0)

谢谢Bryan,这是链接 - 显然在effbot http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

(...)

  

您可以使用bind_class方法   修改类上的绑定   水平,但这会改变   所有文本小部件的行为   应用。更简单的解决方案是   阻止Tkinter传播   事件给其他处理者;回来吧   你事件中的字符串“break”   处理程序:

def ignore(event):
    return "break"
text.bind("<Return>", ignore)
  

text.bind("<Return>", lambda e: "break")
  顺便说一下,如果你真的想要   改变所有文本的行为   你的应用程序中的小部件,这里是   如何使用bind_class方法:

top.bind_class("Text", "<Return>", lambda e: None)
  

但是你有很多原因   不应该这样做。例如,它   这一天彻底搞砸了   您希望延长您的申请   有一些很酷的小UI组件你   从网上下载。更好用   你自己的Text小部件专业化,   并保留Tkinter的默认绑定   完好:

class MyText(Text):
    def __init__(self, master, **kw):
        apply(Text.__init__, (self, master), kw)
        self.bind("<Return>", lambda e: "break")