这是我的项目的简化版本。我想要一个按钮可以多次使用,但是如果我按下它,它会再次显示标签文本。我不知道再次按下按钮后如何隐藏标签。
`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()
,但它没有定义。我不知道如何在另一个函数中定义它。
这个问题有点难以理解,但听起来您想要的是打开和关闭标签的按钮。这可以通过几种不同的方式来完成,具体取决于您是否希望全局声明标签。
此处显示了执行此操作的一种方法:
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