我有一个相当简单的问题,就是当我在GUI上的特定tkinter输入字段中按下退格键时,它会删除任何文本的字段。 一切进展顺利,直到我想在多个输入字段上使用此方法。
代码
import tkinter
class BuildWidgets:
def __init__(self, master):
self.master = master # reference the main window
self.BACKSPACE = ''
self.TextBox = tkinter.Entry(self.master,width=10)
self.TextBox.bind("<Key>", self.clearTextBox)
self.TextBox.pack()
self.TextBox2 = tkinter.Entry(self.master,width=10)
self.TextBox2.bind("<Key>", self.clearTextBox2)
self.TextBox2.pack()
def clearTextBox(self,event):
pressed = event.char
if pressed == self.BACKSPACE:
self.TextBox.delete(0,'end')
def clearTextBox2(self,event): #I want to eliminate repetitive methods
pressed = event.char
if pressed == self.BACKSPACE:
self.TextBox2.delete(0,'end')
我基本上将键事件绑定到输入字段,并且回调检查是否按下了退格,如果是,则删除文本。但是,当我添加第二个输入字段时,我需要创建第二个方法,并且每个输入字段都会继续显示!这是因为我无法找到将条目传递给单个方法的方法,因为它是小部件中的回调。
问题
我如何或者可以创建一个明确的方法来区分哪个输入字段正在调用它?
答案 0 :(得分:2)
传递给函数的event
对象具有widget
属性,该属性是捕获错误的小部件。
def clearTextBox(self,event):
pressed = event.char
if pressed == self.BACKSPACE:
event.widget.delete(0,'end')