python - Making a class remove itself -
i making program using tkinter create list of events. used class make event. if click add event button (second script shown), creates new instance of class, lengthening list. however, want able remove events list. trying attach remove button each class that, when clicked, delete class. code class script (classes.py):
from tkinter import * class agendaevent: def __init__(self, master): self.frame = frame(master, padx=10, pady=10) self.frame.pack(side=top) self.name = entry(self.frame) self.name.grid(row=1, column=0) self.time = entry(self.frame, width=10) self.time.grid(row=1, column=1, padx=5) self.label1 = label(self.frame, text="event name") self.label1.grid(row=0, column=0) self.label2 = label(self.frame, text="minutes") self.label2.grid(row=0, column=1) self.remove = button(self.frame, text="remove", command=agendaevent.remove) self.remove.grid(row=1, column=3) def remove(agendaevent): del agendaevent when press remove button, error
exception in tkinter callback traceback (most recent call last): file "c:\python27\lib\lib-tk\tkinter.py", line 1532, in __call__ return self.func(*args) typeerror: unbound method remove() must called agendaevent instance first argument (got nothing instead) how can call instance of agendaevent? or there better way of going this? code main script (main.py):
from tkinter import * import classes def addevent(): classes.agendaevent(root) root = tk() addeventbutton = button(root, text="add event", command=addevent) addeventbutton.pack(side=bottom) root.mainloop()
you can remove labels , other widgets (not sure all) .destroy(). if store instances of class in way can forget or destroy them, if instance instance don't see problem (read, can't you). if want learn how build guis tkinter should check out sentdex's videos on subject on youtube.
this how make tkinter widgets buttons think trying do:
- i make counter variable counts how many objects list contains.
- i make button point method or function makes label contains info want contain, e.g. .get() entry box.
- the function adds 1 entry counter variable.
- then make button points method or function destroys last label, use counter variable index know label destroy.
- i subtract 1 counter variable
i use dictionary keep labels , other widgets in order, e.g. using counter variable key.
example:
from tkinter import * class myevent("something tkinter"): def __init__(self, parent): "here need tkinter code make frame or put widgets in" self.mycounter = 0 self.myeventlabel = {} addbutton = button(parent, text="add event", command=addevent).pack() destroybutton = button(parent, text="remove last event", command=removeevent).pack() def addevent(self): self.myeventlabel[self.mycounter] = label("here goes options want) self.mycounter+=1 def removeevent(self): self.mycounter-=1 self.myeventlabel[self.mycounter].destroy() hope helped, if missed point, in defense i'm not programmer, needs use programming means end. again, sentdex's videos covers alot of tkinter, check them out.
Comments
Post a Comment