如何隐藏、恢复和删除 Tkinter 控件
在本教程中,我们将介绍如何通过单击按钮来隐藏,恢复 Tkinter 控件。最后,我们还将向你展示如何删除或杀死现有的 Tkinter 控件。
与 Tkinter 控件中的 pack
方法相反,我们可以通过调用 pack_forget()
method 使控件不可见来隐藏 Tkinter 控件。
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()
self.buttonForget = tk.Button(self.root,
text = 'Click to hide Label',
command=lambda: self.label.pack_forget())
pack_forget()
绑定 buttonForget
到按钮命令。
单击按钮后,它将隐藏标签控件,但是标签本身仍然存在,只是变得不可见。
我们需要再次调用 pack()
方法来将此控件变得可见,或者换句话说,将其恢复。
如果将控件放置在 grid
布局管理器中,则应使用 grid_forget()
方法使 Tkinter 控件不可见。
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()
self.buttonForget = tk.Button(self.root,
text = 'Click to hide Label',
command=lambda: self.label.grid_forget())
在这里,我们将 grid_forget
方法绑定到按钮的命令。
你可能会注意到,在再次调用 grid
方法之后,标签的位置在隐藏之前是不一样的。
如果我们打算将标签恢复到其原始位置,则应该使用 grid_remove
方法。
grid_remove()
隐藏控件,但它会记住诸如 column
和 row
的网格选项。
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()
我们将展示如何通过调用 destroy
方法来永久删除 Tkinter 控件。
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()
单击按钮后,按钮将被删除。
你可以尝试单击 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"
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
Django 返回 JSON
发布时间:2023/05/04 浏览次数:106 分类:Python
-
在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。
在 Django 中创建对象
发布时间:2023/05/04 浏览次数:59 分类:Python
-
本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。
在 Django 中为多项选择创建字段
发布时间:2023/05/04 浏览次数:75 分类:Python
-
在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。