Tkinter:如何动态创建可以销毁或删除的小部件?

我正在寻找一种创建小部件(很可能是标签)广告恶心的方法,但需要注意的是,以后可以将其删除或解包。

我可以很好地生成小部件,但是没有为其指定名称。我不了解如何删除某个匿名小部件(如果可能)。

我的第一个直觉是使用稳定的约定动态创建变量名,但这可能不必要地打开一罐蠕虫。这个想法在下面表达。我希望能够删除某个Button小部件,而在运行时不知道我将处理多少个。谢谢。

from Tkinter import *

import time

import ttk

def onDoubleClick(event):

item = t.selection()

#print "you clicked on", t.item(item,"text")

if (t.item(item,"text")=="Start IO"):

Button2 = Button(frame2,text="Button2",command=but).pack()

def but():

pack_forget()

root=Tk()

root.geometry("800x300")

frame1 = Frame(root)

frame2 = Frame(root)

t=ttk.Treeview(frame1)

t.heading("#0",text="Test steps")

t.insert("",0,"IO",text="IO")

t.insert("IO","end",text="Start")

t.bind("<Double-1>", onDoubleClick)

t.pack()

frame1.pack(side=LEFT)

frame2.pack(side=LEFT)

我的功能要求是近视。我的最终目标是并排放置一个Label小部件和一个Button,它们都构成了测试启动器中的“步骤”。单击该按钮将从GUI上同时删除其本身及其相应的Label。我可以同时创建widgets和删除它们对按钮的回调一方,而是双方pack_forget我相信我需要

功能。我相信我的问题在于传递正确的参考给 一个用例如下图所示:....

[如果可以解决我的RTFM,请随时告诉我,我只是找不到它]

测试:进行PB&J

步骤0:拿面包[删除步骤]

步骤1:涂抹PB [删除步骤]

步骤2:涂抹果冻[移除步骤]

回答:

您需要将动态创建的窗口小部件存储在列表中。有类似的东西

dynamic_buttons = []

def onDoubleClick(event):

...

button = Button(...)

dynamic_buttons.append(button)

button.pack()

然后,您可以访问要删除的按钮,例如,

dynamic_buttons[0].destroy()

编辑:有关您的用例的更多信息,我可能会做

class RemovableTask(Frame):

def __init__(self, master, name, **options):

Frame.__init__(self, master, **options)

lbl = Label(self, text=name)

btn = Button(self, text='Remove step', command=self.destroy)

lbl.grid(row=0, column=0)

btn.grid(row=0, column=1)

然后只需创建名称为“ Step 0:Get Bread”之类的RemovableTask实例,然后将其网格化或打包到一列中。其他所有内容将自动处理。

以上是 Tkinter:如何动态创建可以销毁或删除的小部件? 的全部内容, 来源链接: utcz.com/qa/410373.html

回到顶部