Tkinter中移除place布局按钮失败,寻求解决方法
问题原因与解决方法
问题根源
你同时给按钮调用了pack()和place()两种布局管理器,Tkinter组件在使用多种布局时,最后一次调用的布局会完全覆盖之前的布局设置。这里按钮实际是由place()控制位置的,而你调用的pack_forget()只对pack()布局生效,所以自然看不到任何效果。
解决代码
把click()函数里的pack_forget()换成对应place()布局的移除方法place_forget()即可:
import tkinter as t root = t.Tk() def click(): button.place_forget() # 替换为place布局对应的移除方法 root.maxsize(375, 912) img = t.PhotoImage(file="background.png") background = t.Label(root, image=img) background.pack() button = t.Button(root, text ="Click\nme", command=click) # 这里的pack()可以直接删掉,因为后续的place()会覆盖它的布局作用 button.pack() button.place(x=157, y=600) root.mainloop()
补充说明
- Tkinter的每个组件只能用一种布局管理器(
pack()/place()/grid()),重复调用不同布局会导致前一种布局的设置被忽略 - 移除组件时必须匹配对应的布局方法:
pack()布局用pack_forget()place()布局用place_forget()grid()布局用grid_forget()
内容的提问来源于stack exchange,提问作者asd
相关产品推荐
相关产品推荐

