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

Reply via email to