python - 我在我正在使用 tkinter 的 GUI 中创建了一个“清除”按钮。如何让这个按钮清除文本?
问题描述
我遇到的问题是在按下清除按钮时尝试清除输入的文本。我知道有一种叫做命令绑定的东西,并传入一个可以清除文本的函数作为对命令的引用。我只是有点困惑要这样做。
以下是相关代码:
class Window(Frame):
def __init__(self, master):
super().__init__(master)
master.title('Learning Python')
master.configure(background='black')
master.geometry('900x200')
master.resizable(0, 0)
class Submit(Button):
def __init__(self, master):
super().__init__(master)
self.configure(text='Submit', background='black', foreground='light green', highlightthickness=0,
border=0)
class Clear(Button):
def __init__(self, master):
super().__init__(master)
self.configure(text='Clear', background='black', foreground='light green', highlightthickness=0,
border=0)
class ProgressBar(ttk.Progressbar):
def __init__(self, master):
super().__init__(master)
self.config(orient='horizontal', maximum=1462, mode='determinate')
class PagesRead(Label):
def __init__(self, master):
super().__init__(master)
self.config(text='How many page(s) did you read?', background='black', foreground='light green')
class EntryBox(Entry):
def __init__(self, master):
super().__init__(master)
if __name__ == '__main__':
root = tk.Tk()
app = Window(root)
bar = ProgressBar(root)
bar.pack(fill=tk.BOTH)
pages = PagesRead(root)
pages.pack()
entry = EntryBox(root)
entry.pack()
submit = Submit(root)
submit.pack()
clear = Clear(root)
clear.pack()
app.mainloop()
解决方案
class Clear(Button):
def __init__(self, master):
super().__init__(master)
self.configure(
command=clear_callback
text='Clear',
background='black',
foreground='light green',
highlightthickness=0,
border=0
)
然后你可以做这样的事情:
def clear_callback(self, event=None):
self.entry.delete(0, "end")
您还可以绑定事件,此页面上有一些很棒的信息
显式绑定以 tkinter 事件对象的形式传递额外的参数,因此有时您可能需要使用 kwarg 或 lambda 表达式来传递额外的参数
app.bind(
"<Return>",
lambda: clear_callback(event)
)
希望这会有所帮助。干杯。