[Tkinter-discuss] How to enable load button in python-tkinter widget
Michael O'Donnell
michael.odonnell at uam.es
Fri Jun 27 12:12:29 CEST 2008
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 michael.odonnell at uam.es
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()
More information about the Tkinter-discuss
mailing list