Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在GUI中创建了一个“清除”按钮,我正在使用tkinter。如何使此按钮清除文本?_Python_User Interface_Tkinter - Fatal编程技术网

Python 我在GUI中创建了一个“清除”按钮,我正在使用tkinter。如何使此按钮清除文本?

Python 我在GUI中创建了一个“清除”按钮,我正在使用tkinter。如何使此按钮清除文本?,python,user-interface,tkinter,Python,User Interface,Tkinter,我遇到的问题是,当按下清除按钮时,试图清除输入的文本。我知道有一种叫做命令绑定的东西,传入一个函数,可以清除文本作为对命令的引用。我只是有点困惑,不知道该怎么做 以下是相关代码: class Window(Frame): def __init__(self, master): super().__init__(master) master.title('Learning Python') master.configure(backgroun

我遇到的问题是,当按下清除按钮时,试图清除输入的文本。我知道有一种叫做命令绑定的东西,传入一个函数,可以清除文本作为对命令的引用。我只是有点困惑,不知道该怎么做

以下是相关代码:

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()
然后你可以这样做:

def clear_callback(self, event=None):
    self.entry.delete(0, "end")
您还可以绑定事件,有一些关于

显式绑定以tkinter事件对象的形式传递额外的参数,因此有时可能需要使用kwarg或lambda表达式来传递额外的参数

app.bind(
    "<Return>",
    lambda: clear_callback(event)
)

希望这是有帮助的。干杯。

即使您为条目创建了一个新类,它仍然保留条目方法。因此,您可以简单地调用delete方法:

clear = Clear(root)
clear.config(command=lambda:entry.delete(0, 'end'))
clear.pack()
根据您的喜好,您可以为EntryBox类创建一个clear方法,并在不带参数的情况下调用它:

class EntryBox(Entry):
    def __init__(self, master):
        super().__init__(master)

    def clear(self):
        self.delete(0, 'end') 
然后命令按钮使用此方法:

clear = Clear(root)
clear.config(command=entry.clear)
clear.pack()

这不会很有效,因为他们想要清除的小部件在另一个类中。
clear = Clear(root)
clear.config(command=entry.clear)
clear.pack()