【问题标题】:How to remove a button embedded in the window? (Tkinter)如何删除嵌入在窗口中的按钮? (Tkinter)
【发布时间】:2019-04-26 08:22:58
【问题描述】:

我为一个游戏创建了一个播放按钮,当我们点击它时我想删除它。

但是,我在带有 canvas.create_window 的窗口中拥有它,所以我无法使用“pack_forget”将其删除。

你知道如何删除它吗?

bouton_play=PhotoImage(file="bouton_play.gif")
Jouer=Button(fenetre,image=bouton_play,relief=FLAT,borderwidth=0,highlightthickness=0,command=debut)
canvas.create_window(144,450,window=Jouer)

【问题讨论】:

  • 如果您确定以后不再使用该按钮,您可以随时从画布中删除 create_window 项目
  • 是的,但是在我想用画布 create_window 创建之后,按钮重放,所以这是个问题吗?
  • 最简单的解决方案是使用create_window在画布上创建一个框架,并正常使用所有小部件。
  • 这是我第一次听说这个,你有一个使用这个解决方案的例子吗?
  • 保存窗口的ID,如button = canvas.create_window(...)。然后在按钮命令函数里面,执行canvas.delete(button)来移除按钮。

标签: python-3.x button tkinter tkinter-canvas


【解决方案1】:

在画布中插入按钮后,必须将其视为画布元素,并使用canvas.delete(tag_or_id) 而不是widget.geometry_manager_forget()

import tkinter as tk

def debut():
    print('debut')
    canvas.delete(btnw)  # <-- this removes the window containing the button

root = tk.Tk()
canvas = tk.Canvas(root, width=500, height=500)
canvas.pack()
btn = Button(root, text='jouer', command=debut)
btnw = canvas.create_window(200, 200, window=btn)  # <- this is the canvas element to delete from the canvas 

root.mainloop()

【讨论】:

【解决方案2】:

试试下面的代码。单击按钮后,它应该会消失。

import tkinter as Tk

def disappear():
    but.grid_forget()

root = Tk.Tk()

canvas = Tk.Canvas(root, bg = 'black', width = 500, height = 500)
canvas.grid(row = 0, column = 0)

frame = Tk.Frame(bg = 'red')
canvas.create_window(0, 0, window = frame, anchor = Tk.NW)

but = Tk.Button(frame, text = 'Disappear', command = disappear)
but.grid(row = 0, column = 0)

root.mainloop()

希望这会有所帮助。

【讨论】:

  • 感谢您的回答,不幸的是它不适合我的情况
  • 按钮将消失,但框架小部件仍将在画布上。
  • @BryanOakley 是的。我只是给他一个如何在画布上使用框架的例子。从评论链(关于问题)可以看出,他没有很好地说明他的问题。
猜你喜欢
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2021-11-20
  • 2020-07-06
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多