Python tkinter重写默认的ctrl-h绑定
我对绑定ctrl-h没有问题。但是,当我执行ctrl-h时,我注意到最后一个字符也从条目中删除。我认为这可能是python默认的ctrl-h绑定。我怎样才能禁用它 ---更新--- 我已经添加了Python tkinter重写默认的ctrl-h绑定,python,python-3.x,tkinter,tkinter-entry,Python,Python 3.x,Tkinter,Tkinter Entry,我对绑定ctrl-h没有问题。但是,当我执行ctrl-h时,我注意到最后一个字符也从条目中删除。我认为这可能是python默认的ctrl-h绑定。我怎样才能禁用它 ---更新--- 我已经添加了返回'break'内容。但它仍然不起作用。最后一个字符将在askstring对话框显示之前立即删除。下面是绑定的代码 def replace(self): target = simpledialog.askstring(title = 'Replace', prompt = 'Replace Ta
返回'break'
内容。但它仍然不起作用。最后一个字符将在askstring对话框显示之前立即删除。下面是绑定的代码
def replace(self):
target = simpledialog.askstring(title = 'Replace', prompt = 'Replace Target')
if not target:
return 'break'
withValue = simpledialog.askstring(title = 'Replace', prompt = 'Replace With')
if not withValue:
return 'break'
for entry in self.entries.values():
setEntry(entry, entry.get().replace(target, withValue))
return 'break'
顺便说一句,我把它和母版绑定在一起,而不是条目,因为我有很多条目。和主人绑定更容易
我就是这样装订的
self.master.bind(“”,lambda事件:self.replace())
self.master
定义如下:
class Generator(Frame):
def __init__(self, master):
Frame.__init__(self, master)
## init variables
self.master = master
这就是我传递的信息
root = Tk()
gui = Generator(root)
gui.pack()
root.title('Generator')
root.mainloop()
因为您绑定到根窗口而不是单个小部件,所以在函数中无法执行任何操作。绑定按以下顺序处理:
entry = tk.Entry(root)
bindtags = entry.bindtags()
entry.bindtags((bindtags[2], bindtags[0], bindtags[1], bindtags[3]))
有关如何处理绑定的详细信息,请查看以下问题:
将tkinter作为tk导入
def自定义_退格(事件):
entry.insert(“insert”,“”)
返回“中断”
root=tk.tk()
entry=tk.entry(根)
入口包装(fill=“x”)
bindtags=entry.bindtags()
entry.bindtags((bindtags[2],bindtags[0],bindtags[1],bindtags[3]))
root.bind(“,自定义_退格)
root.mainloop()
在处理程序中返回“break”
,以取消对密钥的默认处理。请提供一个简单的问题代码示例。此外,如果条目中有选择项,它还会显示BackSpace键和Control-h删除选择项。如果没有选择,它将删除插入光标左侧的字符。的可能副本请通过提供@BryanOakley来显示如何将find
绑定到control-h。我已对其进行了更新。很抱歉造成混淆,这是替换未找到函数。很抱歉,它不工作。你能在更新区看到我的代码吗?@SeakyLone:我已经更新了我的答案。您添加了原始问题中遗漏的一个重要细节。但如果我只是更改顺序,它在执行我的命令后是否仍会执行预定义的“ctrl-h”?@SeakyLone:如果您返回“break”,任何进一步的处理都会停止。如果在默认绑定之前返回“break”,那么默认绑定将不会发生。谢谢,它可以正常工作。所以每一个条目我都要这么做?
import tkinter as tk
def custom_backspace(event):
entry.insert("insert", "<backspace>")
return "break"
root = tk.Tk()
entry = tk.Entry(root)
entry.pack(fill="x")
bindtags = entry.bindtags()
entry.bindtags((bindtags[2], bindtags[0], bindtags[1], bindtags[3]))
root.bind("<Control-h>", custom_backspace)
root.mainloop()