1

我是 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 中使用网格管理器删除输入框?与此相关的其他小部件我还需要在按钮单击或事件时删除列表框、标签和小部件。

问候,丹尼尔

4

1 回答 1

3

grid什么都不返回;通过执行TestEntry = Entry(..).grid(...),TestEntry 变成NoneEntry对象。

替换以下行:

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()
于 2013-10-09T05:45:33.630 回答