是否可以在.destroy()之后“激活”按钮?

时间:2019-06-15 10:54:24

标签: python-3.x button tkinter

我正在用Python编写一个游戏,为此,我希望在tkinter中有一些按钮,单击此按钮后可以销毁并“恢复”。有可能“复兴”被破坏的按钮吗?

我尝试再次对Buttons进行网格化,但这没有用。

def btnclick(event):
    b1.destroy()
def revive(event):
    b1.grid(row=0, column=4)
b1 = Button(root)
b2 = Button(root)
b1.bind("<Button-1>", btnclick)
b2.bind("<Button-1>", revive)
b1.grid(row=0, column=4)
b2.grid(row=1, column=4)

我认为可以将按钮重新显示在屏幕上,但我只会遇到以下错误:_tkinter.TclError: bad window path name ".47822896"

1 个答案:

答案 0 :(得分:1)

您不能“复活”被破坏的物体;您可以重新创建它,或者更好的是,您可以使用grid_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.Buttons具有属性command,您应该利用并使用该属性,而不是自定义对事件的绑定。