On 7/18/2011 3:23 PM, woooee wrote:
Partial can be used in a GUI program, like Tkinter, to send arguments
to functions.  There are other ways to do that as well as using
partial.  The following program uses partial to send the color to the
change_buttons function.
from Tkinter import *
from functools import partial

class App:
    def __init__(self, parent):
     self.my_parent = parent
     self.my_parent.geometry("200x100+10+10")

     self.R = list()
     for ctr, color in enumerate(("Red", "Blue", "Green")):
         btn = Radiobutton(self.my_parent, text=color, value=ctr+1,
                           command=partial(self.change_buttons, color))
         btn.grid(row = 2, column = ctr+1)

This is a nice illustration. For future reference: enumerate now takes a start value as second parameter. Given as 1, you do not need to remember to add 1 for each usage.

    for ctr, color in enumerate(("Red", "Blue", "Green"),1):
        btn = Radiobutton(self.my_parent, text=color, value=ctr,
                          command=partial(self.change_buttons, color))
        btn.grid(row = 2, column = ctr)

         btn.deselect()
         self.R.append(btn)
     self.R[0].select()
     self.change_buttons("Red")

    def change_buttons(self, color):
        self.my_parent.configure(bg=color)
        for btn in self.R:
             btn.configure(bg=color)

if __name__ == "__main__":
     root = Tk()
     root.title ("Color Option")
     app = App(root)
     root.mainloop()


--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to