像这样的东西,会使小部件正常显示:
Label(self, text = 'hello', visible ='yes')
Run Code Online (Sandbox Code Playgroud)
虽然这样的事情会使小部件根本不出现:
Label(self, text = 'hello', visible ='no')
Run Code Online (Sandbox Code Playgroud)
luc*_*luc 51
您可能对 小部件的方法pack_forget和grid_forget方法感兴趣.在以下示例中,单击时按钮消失
from Tkinter import *
def hide_me(event):
event.widget.pack_forget()
root = Tk()
btn=Button(root, text="Click")
btn.bind('<Button-1>', hide_me)
btn.pack()
btn2=Button(root, text="Click too")
btn2.bind('<Button-1>', hide_me)
btn2.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
Bry*_*ley 28
如另一个答案所解释的,一种选择是使用pack_forget或grid_forget.另一个选择是使用lift和lower.这会更改窗口小部件的堆叠顺序.实际效果是你可以隐藏兄弟小部件(或兄弟姐妹的后代)后面的小部件.如果你希望它们对你们可见lift,当你希望它们对你们不可见时lower.
优点(或缺点......)是他们仍占用主人的空间.如果你"忘记"一个小部件,其他小部件可能会重新调整它们的大小或方向,但如果你提高或降低它们,它们就不会.
这是一个简单的例子:
import Tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.frame = tk.Frame(self)
self.frame.pack(side="top", fill="both", expand=True)
self.label = tk.Label(self, text="Hello, world")
button1 = tk.Button(self, text="Click to hide label",
command=self.hide_label)
button2 = tk.Button(self, text="Click to show label",
command=self.show_label)
self.label.pack(in_=self.frame)
button1.pack(in_=self.frame)
button2.pack(in_=self.frame)
def show_label(self, event=None):
self.label.lift(self.frame)
def hide_label(self, event=None):
self.label.lower(self.frame)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道这已经晚了几年了,但这是截至 2013 年 10 月 27 日 Google 对“Tkinter hide Label”的第三次回应...所以,如果几周前像我这样的人正在构建一个简单的 GUI,并且只是希望显示一些文本而不通过“降低”或“提升”方法将其交换为另一个小部件,我想提供一个我使用的解决方法(Python2.7,Windows):
from Tkinter import *
class Top(Toplevel):
def __init__(self, parent, title = "How to Cheat and Hide Text"):
Toplevel.__init__(self,parent)
parent.geometry("250x250+100+150")
if title:
self.title(title)
parent.withdraw()
self.parent = parent
self.result = None
dialog = Frame(self)
self.initial_focus = self.dialog(dialog)
dialog.pack()
def dialog(self,parent):
self.parent = parent
self.L1 = Label(parent,text = "Hello, World!",state = DISABLED, disabledforeground = parent.cget('bg'))
self.L1.pack()
self.B1 = Button(parent, text = "Are You Alive???", command = self.hello)
self.B1.pack()
def hello(self):
self.L1['state']="normal"
if __name__ == '__main__':
root=Tk()
ds = Top(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
这里的想法是,您可以使用“.cget('bg')” http://effbot.org/tkinterbook/widget.htm渲染它,将 DISABLED 文本的颜色设置为父级的背景 ('bg') “无形的”。按钮回调将标签重置为默认前景色,并且文本再次可见。
这里的缺点是,即使您无法阅读文本,您仍然必须为文本分配空间,并且至少在我的计算机上,文本不能完美地融入背景。也许通过一些调整,颜色可能会更好,并且对于紧凑的 GUI,空白空间分配对于简短的简介来说应该不会太麻烦。
有关我如何发现颜色内容的信息,请参阅默认窗口颜色 Tkinter 和十六进制颜色代码。
| 归档时间: |
|
| 查看次数: |
99893 次 |
| 最近记录: |