Python 3.x 是否有可能;“复兴”;.destroy()之后的按钮?

Python 3.x 是否有可能;“复兴”;.destroy()之后的按钮?,python-3.x,button,tkinter,Python 3.x,Button,Tkinter,我正在用Python编写一个游戏,为此,我想在tkinter中有一些按钮,我可以从另一个按钮点击中销毁并“恢复”。有可能“复活”被破坏的按钮吗 我试着再次将按钮网格化,但没有成功 def btnclick(事件): b1.销毁() def恢复(事件): b1.网格(行=0,列=4) b1=按钮(根) b2=按钮(根) b1.绑定(“,b单击) b2.绑定(“,恢复) b1.网格(行=0,列=4) b2.网格(行=1,列=4) 我原以为这会将按钮放回屏幕上,但我只得到以下错误:\u tkinte

我正在用Python编写一个游戏,为此,我想在tkinter中有一些按钮,我可以从另一个按钮点击中销毁并“恢复”。有可能“复活”被破坏的按钮吗

我试着再次将按钮网格化,但没有成功

def btnclick(事件):
b1.销毁()
def恢复(事件):
b1.网格(行=0,列=4)
b1=按钮(根)
b2=按钮(根)
b1.绑定(“,b单击)
b2.绑定(“,恢复)
b1.网格(行=0,列=4)
b2.网格(行=1,列=4)

我原以为这会将按钮放回屏幕上,但我只得到以下错误:
\u tkinter.TclError:错误的窗口路径名“.47822896”

无法“恢复”已销毁的对象;您可以重新创建它,或者更好的是,您可以使用
grid\u-forget
从GUI布局中删除它,然后使用几何体管理器
grid
重新插入它

下面是一个简短的例子:

import tkinter as tk

def hide_b1():
    b1.grid_forget()

def show_b1():
    b1.grid(row=0, column=4)

root = tk.Tk()
b1 = tk.Button(root, text='b1', command=hide_b1)
b2 = tk.Button(root, text='b2', command=show_b1)
show_b1()
b2.grid(row=1, column=4)

root.mainloop()
请注意,
tk.button
有一个属性
command
,您应该利用并使用该属性,而不是对事件的自定义绑定