【问题标题】:Create-Delete Buttons创建-删除按钮
【发布时间】:2015-07-05 06:33:20
【问题描述】:

我正在尝试使用 python 3.3 版在 Tkinter 中制作两个按钮,一个用于创建按钮,一个用于删除所述按钮。到目前为止,它一直在工作,除了如果我创建多个按钮,我只能删除一个已创建的按钮。我的问题是:每次调用删除按钮时,我能做些什么来删除按钮? 到目前为止,这是我的代码:

from tkinter import *
def createbutton():
    global secondbut
    secondbut=Button(root,text="button")
    secondbut.pack()
def eliminatebutton():
    secondbut.destroy()
if __name__=='__main__':
    root=Tk()
    global create
    global delete
    create= Button(root,text="create",command=createbutton)
    delete=Button(root,text="delete",command=eliminatebutton)
    create.pack()
    delete.pack()
    root.mainloop()

【问题讨论】:

    标签: user-interface button python-3.x tkinter


    【解决方案1】:

    问题是您将 Button 存储在一个变量 (secondbut) 中,然后在创建新按钮时覆盖该变量。

    不要直接将其存储在变量中,而是将其存储在某个容器中,例如列表。

    这段代码会做你想做的事:

    from tkinter import *
    def createbutton():
        global secondbut
        secondbut.append(Button(root,text="button"))
        secondbut[-1].pack()
    def eliminatebutton():
        secondbut[-1].destroy()
        secondbut.pop()
    if __name__=='__main__':
        root=Tk()
        global create
        global delete
        global secondbut
        secondbut = []
        create= Button(root,text="create",command=createbutton)
        delete=Button(root,text="delete",command=eliminatebutton)
        create.pack()
        delete.pack()
        root.mainloop()
    

    请注意,它删除按钮的顺序与添加按钮的顺序相反

    【讨论】:

    • 谢谢,这很有帮助。我只是想知道我是否向按钮添加了一个命令,但是,创建的每个新按钮也会被覆盖。还是列表中的每个按钮都有自己的命令?
    • 每个按钮都有自己的命令 - 请记住,secondbut 它不再是一个按钮,而是一个按钮列表。
    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2012-01-26
    • 2020-10-15
    相关资源
    最近更新 更多