Python,Tkinter;取消选中复选框时如何使用grid_forget()?

时间:2016-08-04 19:11:03

标签: python tkinter

你好我有一个我正在处理的脚本,当我取消选中复选框时,我试图让一个框架隐藏起来有问题。我正在处理的脚本使用一个检查按钮来调用命令来显示包含一些文本输入字段的框架。问题是当我取消选中复选框时,框架不会消失。以下是脚本的各个部分:

    self.name3 = Name3(self)
    self.check_var4 = tk.IntVar()

    tk.Checkbutton(self,
                   text="Search", variable=self.check_var4,
                   onvalue=1, offvalue=0, height=1, width=10,
                   command=self.show_name3
                   ).grid(row=3, column=0, sticky='E', ipadx=20)

调用:

    def show_name3(self):
        '''Shows Search Widget'''
        self.name3.grid(row=3, column=1, sticky='E',
                         padx=15, pady=5, ipadx=15, ipady=5)

反过来调用:

    class Name3(tk.Frame):

        def __init__(self, parent):

            tk.Frame.__init__(self, parent)

            tk.Label(self,
                    text="info:"
                    ).grid(row=1, sticky='E')
            E3 = Entry(self, bd =2)
            E3.grid(row=1, column=1, columnspan=2, padx=15)
            tk.Label(self,
                    text="Stuff:"
                    ).grid(row=2, sticky='E')
            E4 = Entry(self, bd =2)
            E4.grid(row=2, column=1, padx=15)

我认为我需要做的就是添加一个命令来使用grid.forget()但是如何?我是否使用“if this then grid.forget”如果是这样,有人可以向我解释一下吗?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这样的事情会起作用吗?

def show_name3():
    if self.check_var4.get() == 1:
        self.name3.grid(row=3, column=1, sticky='E', padx=15, pady=5, ipadx=15, ipady=5)
    else:
        self.name3.grid_forget()

它将获得check_var的值,表示Checkbutton是打开还是关闭。如果已启用,则会将name3与网格管理器放在一起。如果它关闭,它将从网格管理器中删除name3