【问题标题】:Remove buttons created in for loop python tkinter删除在for循环python tkinter中创建的按钮
【发布时间】:2017-10-26 18:09:43
【问题描述】:

我希望当我转到第二页并返回主页时,它会删除在 mainloop 中创建的按钮。所以当我再次打开第二页时,它需要再次制作按钮。更新列表

现在它显示按钮 2 次。我知道不要将它添加到函数中,它只会呈现 1 次,但关键是它在函数中时会被删除,并且每次打开主页时都需要重新制作。这样我就可以在应用程序打开时编辑例如列表,它将再次呈现。

这是我的代码:

from tkinter import *

items = ['ijs', 'water', 'lolly', 'laptop']

root = Tk()

def buttonmaker():
    for x in items:
        button = Button(master=secondpage, text=x ).pack()

def mainpagetosecondpage():
    mainpage.pack_forget()
    buttonmaker()
    secondpage.pack()

def secondpagetomainpage():
    secondpage.pack_forget()
    mainpage.pack()



#mainpage
mainpage = Frame(master=root)
main_to_second_button = Button(master=mainpage, text='secondpage', command=mainpagetosecondpage).pack()

#scondpage
secondpage = Frame(master=root)
Second_to_main_button = Button(master=secondpage, text='mainpage', command=secondpagetomainpage).pack()

mainpage.pack()
root.mainloop()

如果有不清楚的地方请追问

【问题讨论】:

    标签: python function loops tkinter


    【解决方案1】:

    在第二帧的设置过程中,你只需要调用一次 buttonmaker:

    from tkinter import *
    
    root = Tk()
    
    def buttonmaker():
        items = ['ijs', 'water', 'lolly', 'laptop']
        for x in items:
            button = Button(master=secondpage, text=x )
            button.pack()
    
    def mainpagetosecondpage():
        mainpage.pack_forget()
        secondpage.pack()
    
    def secondpagetomainpage():
        secondpage.pack_forget()
        mainpage.pack()
    
    #mainpage
    mainpage = Frame(master=root)
    main_to_second_button = Button(master=mainpage, text='secondpage', command=mainpagetosecondpage)
    main_to_second_button.pack()
    
    #scondpage
    secondpage = Frame(master=root)
    Second_to_main_button = Button(master=secondpage, text='mainpage', command=secondpagetomainpage)
    Second_to_main_button.pack()
    buttonmaker()
    
    mainpage.pack()
    root.mainloop()
    

    此外,您需要避免将布局与初始化放在同一行。像variable = Widget(args).pack() 这样的代码会导致错误。像我上面那样使用 2 行。

    【讨论】:

    • 我想我的问题问错了。但是假设我想编辑列表项,当我编辑列表时,它也会呈现新项目。我知道这是一个不好的例子,但是当我打开页面时它会起作用,所以当我对列表进行一些编辑时,它会在我按下按钮转到新框架时添加!
    • @RikdenHartog 我不明白。您想编辑按钮文本吗?然后你需要制作一个按钮对象列表并为每个对象调用btn.config(text=new_text)。做一个更好的例子,并把它放在一个新的帖子中。
    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多