Python Tkinter:pack_forget()与place()不兼容导致标签无法隐藏
Tkinter中隐藏/显示place布局组件的正确方法
你遇到的问题本质是布局管理器不匹配:用place()方法放置的组件,只能用对应布局管理器的隐藏方法,pack_forget()只对通过pack()布局的组件生效,所以调用它不会有任何效果。
正确的处理方式
对于用place()布局的组件,隐藏时调用place_forget()方法,需要显示时直接调用place()(无需重新传入x、y参数,Tkinter会自动保留之前的位置信息)。
修改后的测试代码
from tkinter import * root = Tk() root.geometry("400x400") root.title("test") iconimg = PhotoImage(file="icon.png") icon = Label(root, image=iconimg) # 初始放置组件,记录位置 icon.place(x=20, y=20) def toggle_icon(): if icon.winfo_ismapped(): # 如果组件当前显示,隐藏它 icon.place_forget() else: # 如果组件当前隐藏,恢复显示(自动用之前的位置) icon.place() # 添加按钮来测试隐藏/显示功能 Button(root, text="切换图标显示", command=toggle_icon).pack(pady=50) root.mainloop()
说明
place_forget()只是将组件从界面上隐藏,不会销毁组件,所有属性(包括之前设置的位置、图片等)都会被保留。- 再次调用
icon.place()时,不需要重新指定x、y参数,组件会回到之前place()设置的位置。
内容的提问来源于stack exchange,提问作者SavageCoder
相关产品推荐
相关产品推荐

