如何暂时隐藏标签文本,使其不遍布 tkinter 窗口

问题描述 投票:0回答:1

这是我的项目的简化版本。我想要一个按钮可以多次使用,但是如果我按下它,它会再次显示标签文本。我不知道再次按下按钮后如何隐藏标签。

`from tkinter import*


root = Tk()

root.geometry( "300x200" )



def show():
    szoveg = Label(root, text="hey")
    szoveg.pack()


button = Button(root, text= "button", command= show)
button.pack()


root.mainloop()`

我在不同的函数中尝试了

text.pack_forget()
,但它没有定义。我不知道如何在另一个函数中定义它。

python user-interface tkinter show-hide
1个回答
0
投票

这个问题有点难以理解,但听起来您想要的是打开和关闭标签的按钮。这可以通过几种不同的方式来完成,具体取决于您是否希望全局声明标签。

此处显示了执行此操作的一种方法:

from tkinter import *


root = Tk()

root.geometry( "300x200" )



def toggle():
    try:
        # Check to see if the root window has a child named "szoveg", and if so destroy it
        root.nametowidget('.szoveg').destroy()
    except:
        # Otherwise, create a label named "szoveg"
        szoveg = Label(root, text="hey", name="szoveg")
        szoveg.pack()


button = Button(root, text= "button", command= toggle)
button.pack()


root.mainloop()

每次单击该按钮时,都会检查小部件“szoveg”是否作为根窗口的子窗口存在。如果有,请将其删除。如果

try
导致错误(即没有名为“szoveg”的标签),那么它将在
except
上移动,从而创建标签。

另一种方法是在回调函数之外创建标签,如下所示:

from tkinter import *


root = Tk()

root.geometry( "300x200" )


szoveg = Label(root, text="hey", name="szoveg")

def toggle():
    if szoveg.winfo_ismapped():
        szoveg.pack_forget()
    else:
        szoveg.pack()


button = Button(root, text= "button", command= toggle)
button.pack()


root.mainloop()

szoveg.winfo_ismapped()
检查是否已调用
pack
grid
方法。 此方法的一个方便之处在于标签小部件始终存在,因此如果您需要用它做其他事情,则不会出现任何错误。

希望这有帮助, 测验器515SY

© www.soinside.com 2019 - 2024. All rights reserved.