我正在用Python编写一个游戏,为此我想在tkinter中有一些按钮,我可以在之后通过另一个按钮单击来销毁和"恢复"。是否有可能"复活"被摧毁的按钮?
我尝试再次网格化按钮,但没有奏效。
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"
您无法"恢复"被破坏的对象;您可以重新创建它,或者更好的是,您可以使用 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
,您应该利用和使用,而不是事件的自定义绑定。