【问题标题】:how to disappear a button after clicking on it in tkinter?在tkinter中单击按钮后如何消失?
【发布时间】:2021-09-12 09:27:35
【问题描述】:

考虑以下代码:

from tkinter import *
root=Tk()
root.geometry('700x700')
frame=Frame(root)
frame.pack(fill=BOTH,expand=True)
def opencanvas():
    canvas=Canvas(frame,bg='red')
    canvas.place(x=50,y=50,height=300,width=300)
    button2=Button(frame,text='exit',command=canvas.place_forget)
    button2.place(x=5,y=10)
button1=Button(frame,text='open',command=opencanvas)
button1.place(x=5,y=10)
mainloop()

这个程序在 tkinter 窗口中打开一个框架,并在框架中打开一个“打开”按钮。当按下“打开”时,一个画布打开,一个名为“退出”的按钮出现在框架中打开按钮的同一位置。退出按钮隐藏画布。

单击“退出”按钮时,我想在执行其操作(即隐藏画布)后自动消失“退出”按钮。我应该怎么做?

我想在 opencanvas() 中插入一些命令,按钮在按下后立即消失。

nb:两个按钮应该放在同一个地方,并且具有相同的尺寸。

【问题讨论】:

  • 为什么要隐藏画布而不是销毁它?另外,为什么不创建canvasbutton2 全局变量并创建一个隐藏/销毁它们的新函数
  • 因为我想反复使用画布。我只想在按钮执行操作后隐藏按钮。该函数在按钮显示之前删除按钮。
  • 因此创建一个调用canvas.place_forget()button2.place_forget() 的函数并将其设置为button2 的命令。要使其工作,您需要同时创建 canvasbutton2 全局变量。

标签: python-3.x tkinter button


【解决方案1】:

我找到了我的问题的答案。可以通过在按钮命令中使用 lambda 来完成,如下所示。

button2=Button(frame,text='exit',command=lambda:[canvas.place_forget(),button2.place_forget()])

lambda 函数一一执行命令。

【讨论】:

    【解决方案2】:

    根据您使用的几何管理器,使用 button1.place_forget().grid_forget().pack_forget()。如果您使用这些,则该按钮将被隐藏。要找回按钮,请使用 .place() 等...

    如果你愿意,你可以使用button1.destroy(),但这会永久删除按钮,如果你必须重新制作那个按钮,你必须从头开始初始化。

    使用button.place_forget() 代码隐藏按钮,然后使用button1.place(x=5,y=10) 显示按钮

    【讨论】:

    • 我已经试过了。但是 button2.place_forget() 按钮在它显示在框架中之前就消失了。
    • 不要在创建新按钮后立即使用place_forget()。把它写成按钮的命令,这样当你点击它时,它就会被隐藏
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2014-01-03
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多