python清除文本框与按钮事件

时间:2014-08-06 14:55:41

标签: python events tkinter

我正在尝试清除我已经使用按钮'Clear'键入的文本框。但是单击按钮后它不会清除文本!

请解决我的问题!将不胜感激!

import tkinter as tki

class App(object):

    def __init__(self,root):
        self.root = root
        txt_frm = tki.Frame(self.root, width=600, height=400)
        txt_frm.pack(fill="both", expand=True)
        # ensure a consistent GUI size
        txt_frm.grid_propagate(False)

        self.txt1 = tki.Text(txt_frm, borderwidth=3, relief="sunken", height=4,width=55)
        self.txt1.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt1.grid(row=0, column=1, sticky="nsew", padx=2, pady=2)

        button1 = tki.Button(txt_frm,text="Clear", command = self.clearBox)
        button1.grid(column=2,row=0)
    def clearBox(self):
        self.txt1.delete(0, END)

root = tki.Tk()
app = App(root)
root.mainloop()

1 个答案:

答案 0 :(得分:2)

由于END位于tkinter中,您需要使用tki.END"end"(带引号,小写),您的起始索引也应为"1.0"(感谢BryanOakley)而不是0

这个应该有效。

def clearBox(self):
    self.txt1.delete("1.0", "end")

编辑:顺便说一句,如果您使用pack_propagate代替grid_propagate,那就更好了,因为您使用pack来放置框架。

EDIT2 :关于该索引事项,它在here下的行和列部分中编写。

  

...行号从1开始,而列号从0开始......

     

请注意,行/列索引可能看起来像浮点值,但很少可能将它们视为这样(例如,考虑位置1.25与1.3)。在引用缓冲区中的第一个字符时,我有时会使用1.0而不是“1.0”来保存一些键击,但这就是它。