我正在用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"
答案 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
,您应该利用并使用该属性,而不是自定义对事件的绑定。