清除tkinter中的特定小部件

时间:2016-03-29 03:37:37

标签: python tkinter

我试图在python中有一个函数,在按下按钮时清除屏幕。我知道grid_remove但不确定如何使用它。还有一种方法可以清除特定功能中的所有内容,即" hi"和"清除"?

from tkinter import *

class Movies:
    def __init__(self, master):
        hi = Label(text = "Hello")
        hi.grid(row = 0, column = 0)

        clear = Button(text = "Click", command=self.clear)
        clear.grid(row = 1, column = 0)
    def clear(self):
        hi.grid_remove()




root = Tk()
gui = Movies(root)
root.geometry("100x200+0+0")
root.mainloop()

1 个答案:

答案 0 :(得分:0)

如果您只想切换隐藏/显示任何父级小部件中的所有小部件,您可以使用内置的winfo_children方法。小例子:

from tkinter import *

class Movies:

    def __init__(self, master):

        self.master = master
        self.state = 1

        for i in range(5):
            Label(self.master, text='Label %d' % i).grid(row=0, column=i)
        self.magic_btn = Button(self.master, text='Make the Magic!', 
            command=self.magic)
        self.magic_btn.grid(columnspan=5)

    def magic(self):

        self.state = not self.state
        for widget in self.master.winfo_children(): #iterate over all child widgets in the parent
            #Comment out to clear the button too, or leave to toggle widget states
            if widget != self.magic_btn: #or some other widget you want to stay shown
                if self.state:
                    widget.grid()
                else:
                    widget.grid_remove()
                print(self.state)


root = Tk()
gui = Movies(root)
root.mainloop()