Entry小部件上的grid_remove

时间:2013-10-09 05:43:00

标签: python tkinter tk

我是Tkinter的新手,我正在尝试使用网格管理器构建一个简单的GUI,只需按下按钮1,按钮2就会出现一个相邻的输入框。如果你然后按下按钮2,则输入框和按钮2消失。下面是GUI代码的一个切片,按钮消失了,但输入框没有:

import Tkinter
from Tkinter import *


master = Tk()


CreateTestButton = Button(master, text="Create Test", command = CreateTest, fg="red", bg="white",     font="Helvetica 10 bold")
CreateTestButton.grid(column=7, row=1)


def CreateTest():

   TestEntry = Entry(master, text="", width = 100).grid(row=4,columnspan=6)
   Label(self, text="Enter Test Name:").grid(row=3, column=0)

   SaveTestButton = Button(master, text="Save to database", command=saveTest, fg="green", bg="white",    font="Helvetica 10 bold")
   SaveTestButton.grid(row=4, column=5)

   def saveTest():
      SaveTestButton.grid_remove()    
      TestEntry.grid_remove() #ERROR 



mainloop()

如何使用Tkinter中的网格管理器删除输入框?和其他小部件一样,我还需要通过按钮点击或事件删除列表框,标签和小部件。

此致 丹尼尔

1 个答案:

答案 0 :(得分:2)

grid什么都不返回;通过执行TestEntry = Entry(..).grid(...),TestEntry变为None而不是Entry对象。

替换以下行:

TestEntry = Entry(self, text="", width = 100).grid(row=4,columnspan=6)

使用:

TestEntry = Entry(self, text="", width = 100)
TestEntry.grid(row=4,columnspan=6)

完整代码

from Tkinter import *

def CreateTest():
    def saveTest():
        SaveTestButton.grid_remove()    
        TestEntry.grid_remove() #ERROR 
    TestEntry = Entry(master, text="", width = 100)
    TestEntry.grid(row=4,columnspan=6)
    Label(master, text="Enter Test Name:").grid(row=3, column=0)
    SaveTestButton = Button(master, text="Save to database", command=saveTest, fg="green", bg="white",    font="Helvetica 10 bold")
    SaveTestButton.grid(row=4, column=5)

master = Tk()
CreateTestButton = Button(master, text="Create Test", command = CreateTest, fg="red", bg="white",     font="Helvetica 10 bold")
CreateTestButton.grid(column=7, row=1)
mainloop()