从 Tkinter 中的网格中删除小部件
您知道在您的应用程序中工作时,您可以通过单击一个按钮从网格中删除或显示小部件吗?我们可以通过使用grid_remove()方法为每个小部件声明删除函数,然后在按钮中调用该函数,从而从网格中删除小部件。同样,为了在屏幕上显示小部件,我们可以使用grid()方法为每个小部件声明显示函数,然后在按钮中调用该函数。
所需步骤:
步骤1:首先,导入库tkinter。
from tkinter import *
第 2 步:现在,使用 tkinter 创建一个 GUI 应用程序。
app=Tk()
第 3 步:然后,创建一个函数来从 tkinter 的网格中删除小部件。在创建的函数,我们使用了内置函数grid_remove()来删除某些小部件。
def remove(widget1):
widget1.grid_remove()
在这里,我们传递了一个小部件作为参数。您可以添加想要从特定网格中删除的任意数量的小部件。
第 4 步:此外,创建一个函数以在 tkinter 的网格中显示小部件。在创建的函数,我们使用内置函数grid()将某些小部件显示回您想要显示的网格值。
def display(widget1):
widget1.grid(column=#Column value where you want to get back the widget,
row=#Row value where you want to get the widget back,
padx=10,
pady=10)
在这里,我们传递了一个小部件作为参数。通过指定网格位置,您可以添加任意数量的小部件,这些小部件希望在特定网格中显示回来。
第 5 步:接下来,我们使用上面声明的函数创建需要隐藏或显示的小部件。用于从网格的特定行和列中删除和显示小部件:
- 对于小部件Label ,将 label 声明为:
l1=Label(app, text=”#Text you wish to show in label”)
l1.grid(column=#Column value where you want to specify label,
row=#Row value where you want to specify label,
padx=#Padding Value of x,
pady=#Padding Value of y)
- 对于小部件Textbox ,将文本框声明为:
l = StringVar()
l1 = Entry(app, width = 15, textvariable = l)
l1.grid(column=#Column value where you want to specify textbox,
row=#Row value where you want to specify textbox,
padx=#Padding Value of x,
pady=#Padding Value of y)
- 对于小部件Button ,将按钮声明为:
l1 = Button(app, text=”#Text you want to show in button”)
l1.grid(column=#Column value where you want to specify button,
row=#Row value where you want to specify button,
padx=#Padding Value of x,
pady=#Padding Value of y)
- 对于上述指定之外的任何其他小部件,请声明该小部件代替这些小部件。
第 6 步:稍后,创建一个按钮,单击该按钮将从屏幕上删除小部件。
remove_btn = Button(app, text = “Remove widgets”, command = lambda : remove(l1))
remove_btn.grid(column=0, row=0, padx=10, pady=10)
重要说明:不要忘记通过指定您之前创建的函数的参数数量来调用按钮的 command 属性中的 remove函数。
第 7 步:此外,创建一个按钮,单击该按钮将在屏幕上显示小部件。
display_btn = Button(app, text = “#Text you wish to give to button”, command = lambda : display(l1))
display_btn.grid(column=0, row=1, padx=10, pady=10)
重要说明:不要忘记通过指定您之前创建的函数的参数数量来调用按钮的命令属性中的显示函数。
第 8 步:最后,制作用于在屏幕上显示 GUI 应用程序的循环。
app.mainloop()
例子:
在此示例中,我们将使用单个按钮从网格值 (row=3, column=0) 中删除一个名为 ' Vinayak' 的标签,并从网格值 (row=4, column=0) 中删除一个名为' Rai ' 的标签'删除小部件',同时使用按钮'显示小部件'将标签显示回网格值(行 = 3,列 = 0)并按钮返回到网格值(行 = 4,列 = 0)。
Python
# Python program to remove widgets
# from grid in tkinter
# Import the library tkinter
from tkinter import *
# Create a GUI app
app = Tk()
# Creating a function for removing widgets from grid
def remove(widget1, widget2):
widget1.grid_remove()
widget2.grid_remove()
# Creating a function for making widget visible again
def display(widget1, widget2):
widget1.grid(column=0, row=3, padx=10, pady=10)
widget2.grid(column=0, row=4, padx=10, pady=10)
# Button widgets
b1 = Button(app, text="Vinayak")
b1.grid(column=0, row=3, padx=10, pady=10)
# Label Widgets
l1 = Label(app, text="Rai")
l1.grid(column=0, row=4, padx=10, pady=10)
# Create and show button with remove() function
remove_btn = Button(app, text="Remove widgets",
command=lambda: remove(b1, l1))
remove_btn.grid(column=0, row=0, padx=10, pady=10)
# Create and show button with display() function
display_btn = Button(app, text="Display widgets",
command=lambda: display(b1, l1))
display_btn.grid(column=0, row=1, padx=10, pady=10)
# Make infinite loop for displaying app on screen
app.mainloop()
输出: