On Fri, Jun 27, 2008 at 7:12 AM, Michael O'Donnell <[EMAIL PROTECTED]> wrote: > Hi Anil, > > A pure Tkinter dropdown box: click on a button and a menu drops > down, allowing you to select. If you specify a callback function, this is > called > when you make a selection: > > from Tkinter import * > import os, sys > > # SelecteButton Class - creates a button which when clicked on gives > a popup menu. > # if the callback arg is given, this is a function called when a > selection is made, expecting the > # selected option as arg > # The value can be accessed by asking the widget for its x.selected attribute. > # Coded Mick O'Donnell [EMAIL PROTECTED] > > class SelectButton(Label): > > def __init__(self, parent, options, callback=None, default=None, > **otherKeys): > Label.__init__(self, parent, bg="white", relief="raised", > bd=2, **otherKeys) > self.options=options > self.callback=callback > self.oldGrab=None > if default==None: default=self.options[0] > self.bind("<Button-1>", self.showOptions) > self.setOption(default, False) > > def setOption(self, selected, docallback=True): > self.selected=selected > self["text"]=selected > if docallback and self.callback: > self.callback(selected) > > def showOptions(self, event): > menu=Menu(None, tearoff=0) > for option in self.options: > menu.add_command(label=option, command= lambda > lab1=option: self.setOption(lab1)) > menu.post(event.widget.winfo_rootx(), event.widget.winfo_rooty()) > if os.name =="posix" and sys.platform != "darwin": > menu.grab_set() > > # DEMO > > if __name__ == '__main__': > > def showSelected(label): print "You selected: ", label > > tk = Tk() > ssw = SelectButton(tk, ['1','2','3','4','5'], > callback=showSelected, default=str(2)) > ssw.pack(side=TOP, expand=TRUE, fill=BOTH) > tk.mainloop()
If you want to go this way, then Tkinter.OptionMenu is there already. -- -- Guilherme H. Polo Goncalves _______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss