如何隐藏、恢复和删除 Tkinter 控件
在本文中,我们将介绍如何通过单击按钮来隐藏,恢复 Tkinter 控件。最后,我们还将向你展示如何删除或杀死现有的 Tkinter 控件。
隐藏和恢复 Tkinter 控件
pack_forget() 隐藏 Tkinter 控件的方法
与 Tkinter 控件中的 pack 方法相反,我们可以通过调用 pack_forget()method 使控件不可见来隐藏 Tkinter 控件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | try : import Tkinter as tk except : import tkinter as tk class Test(): def __init__( self ): self .root = tk.Tk() self .label = tk.Label( self .root, text = "Label" ) self .buttonForget = tk.Button( self .root, text = 'Click to hide Label' , command = lambda : self .label.pack_forget()) self .buttonRecover = tk.Button( self .root, text = 'Click to show Label' , command = lambda : self .label.pack()) self .buttonForget.pack() self .buttonRecover.pack() self .label.pack(side = "bottom" ) self .root.mainloop() def quit( self ): self .root.destroy() app = Test() |

Tkinter 通过单击按钮隐藏和恢复控件
self.buttonForget = tk.Button(self.root,
text = 'Click to hide Label',
command=lambda: self.label.pack_forget())
pack_forget() 绑定 buttonForget 到按钮命令。
单击按钮后,它将隐藏标签控件,但是标签本身仍然存在,只是变得不可见。
我们需要再次调用 pack() 方法来将此控件变得可见,或者换句话说,将其恢复。
grid_forget() 隐藏 Tkinter 控件的方法如果使用 grid 布局
如果将控件放置在 grid 布局管理器中,则应使用 grid_forget() 方法使 Tkinter 控件不可见。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | try : import Tkinter as tk except : import tkinter as tk class Test(): def __init__( self ): self .root = tk.Tk() self .label = tk.Label( self .root, text = "Label" ) self .buttonForget = tk.Button( self .root, text = 'Click to hide Label' , command = lambda : self .label.grid_forget()) self .buttonRecover = tk.Button( self .root, text = 'Click to show Label' , command = lambda : self .label.grid()) self .buttonForget.grid(column = 0 , row = 0 , padx = 10 , pady = 10 ) self .buttonRecover.grid(column = 0 , row = 1 , padx = 10 , pady = 10 ) self .label.grid(column = 0 , row = 2 , padx = 10 , pady = 10 ) self .root.mainloop() def quit( self ): self .root.destroy() app = Test() |

Tkinter 通过单击按钮使用 grid_forget 方法隐藏和恢复控件
self.buttonForget = tk.Button(self.root,
text = 'Click to hide Label',
command=lambda: self.label.grid_forget())
在这里,我们将 grid_forget 方法绑定到按钮的命令。
你可能会注意到,在再次调用 grid 方法之后,标签的位置在隐藏之前是不一样的。
如果我们打算将标签恢复到其原始位置,则应该使用 grid_remove 方法。
grid_remove() 隐藏 Tkinter 控件的方法,如果使用 grid 布局
grid_remove() 隐藏控件,但它会记住诸如 column 和 row 的网格选项。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | try : import Tkinter as tk except : import tkinter as tk class Test(): def __init__( self ): self .root = tk.Tk() self .label = tk.Label( self .root, text = "Label" ) self .buttonForget = tk.Button( self .root, text = 'Click to hide Label' , command = lambda : self .label.grid_remove()) self .buttonRecover = tk.Button( self .root, text = 'Click to show Label' , command = lambda : self .label.grid()) self .buttonForget.grid(column = 0 , row = 0 , padx = 10 , pady = 10 ) self .buttonRecover.grid(column = 0 , row = 1 , padx = 10 , pady = 10 ) self .label.grid(column = 0 , row = 2 , padx = 10 , pady = 20 ) self .root.mainloop() def quit( self ): self .root.destroy() app = Test() |

Tkinter 通过单击按钮使用 grid_remove 方法隐藏和恢复控件
通过单击一个按钮永久删除 Tkinter 控件
我们将展示如何通过调用 destroy 方法来永久删除 Tkinter 控件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | try : import Tkinter as tk except : import tkinter as tk class Test(): def __init__( self ): self .root = tk.Tk() self .label = tk.Label( self .root, text = "Label" ) self .buttonForget = tk.Button( self .root, text = 'Click to hide Label' , command = lambda : self .label.destroy()) self .buttonRecover = tk.Button( self .root, text = 'Click to show Label' , command = lambda : self .label.pack()) self .buttonForget.pack() self .buttonRecover.pack() self .label.pack(side = "bottom" ) self .root.mainloop() def quit( self ): self .root.destroy() app = Test() |

Tkinter 通过单击按钮使用 destroy 方法删除控件
单击按钮后,按钮将被删除。
你可以尝试单击 buttonRecover 按钮,但会收到如下的 _tkinter.TclError 错误通知,
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:\Users\jinku\OneDrive\Bureaublad\test.py", line 17, in <lambda>
command=lambda: self.label.pack())
File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\tkinter\__init__.py", line 2140, in pack_configure
+ self._options(cnf, kw))
_tkinter.TclError: bad window path name ".!label"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2016-03-16 Axure RP Extension for Chrome