当我在python / tkinter中编写并绑定到Ctrl-b的函数表现异常时,我感到很惊讶(具体:它丢失了所选文本的值,因此text.index(SEL_FIRST)未定义)。< / p>
我很惊讶,在改变了不可能的东西之后,我将它绑定到别的东西 - 而且它起作用了!
我搜索但没有找到任何东西:Control-b绑定到tkinter中的默认值???
的Alessandro
答案 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")