Bob Greschke wrote: > I don't use classes much (mainly because I'm stupid), but I'd like to make a > subclass of the regular Tkinter Button widget that simply adds spaces to the > passed "text=" when the program is running on Windows (Linux, Solaris, Mac > add a little space between the button text and the right and left edges of a > button, Windows does not and it looks bad/can be hard to read). Below is > some pseudo code. What should the guts of the BButton class be? I can't > work out how all of the arguments that would be passed to a regular Button > call get handled. *args and **kw confuse me and I can't seem to find simple > enough examples in my mountain of books.
So watch this: <code> import Tkinter as Tk import sys class MyButton(Tk.Button): system = sys.platform[:3] # 1 def __init__(self, master=None, **kw): # 2 3 if self.system == "win": kw["padx"] = kw.get("padx", 0) + 5 # 4 # alternative solution # if "text" in kw and self.system == "win": # kw["text"] = " " + kw["text"] + " " Tk.Button.__init__(self, master, **kw) # 5 </code> 1. system is a class attribute, so is shared by the class and all instances of the class 2. __init__ is called immediately after an instance of the class is created 3. kw is a dictionary of button options for example: {"text": "Hello", "padx": 2} 4. change value of element "padx" or add this element to dictionary kw 5. call parent __init__ method to create button HTH, Rob -- http://mail.python.org/mailman/listinfo/python-list