diff --git a/Tools/pynche/ChipViewer.py b/Tools/pynche/ChipViewer.py new file mode 100644 index 00000000000..e173a62d965 --- /dev/null +++ b/Tools/pynche/ChipViewer.py @@ -0,0 +1,71 @@ +from Tkinter import * +import Pmw + +class ChipWidget(Pmw.MegaWidget): + _WIDTH = 80 + _HEIGHT = 100 + + def __init__(self, parent=None, **kw): + optionsdefs = (('chipcolor', 'blue', self.__set_color), + ('width', self._WIDTH, self.__set_dims), + ('height', self._HEIGHT, self.__set_dims), + ('text', 'Color', self.__set_label), + ) + self.defineoptions(kw, optionsdefs) + + # initialize base class -- after defining options + Pmw.MegaWidget.__init__(self, parent) + interiorarg = (self.interior(),) + + # create the label + self.__label = self.createcomponent( + # component name, aliases, group + 'label', (), None, + # widget class, widget args + Label, interiorarg) + self.__label.grid(row=0, column=0) + + # create the color chip + self.__chip = self.createcomponent( + 'chip', (), None, + Frame, interiorarg, + relief=RAISED, borderwidth=2) + self.__chip.grid(row=1, column=0) + + # create the color name + self.__name = self.createcomponent( + 'name', (), None, + Label, interiorarg,) + self.__name.grid(row=2, column=0) + + # Check keywords and initialize options + self.initialiseoptions(ChipWidget) + + # called whenever `chipcolor' option is set + def __set_color(self): + color = self['chipcolor'] + self.__chip['background'] = color + self.__name['text'] = color + + def __set_dims(self): + width = self['width'] + height = self['height'] + self.__chip.configure(width=width, height=height) + + def __set_label(self): + self.__label['text'] = self['text'] + +Pmw.forwardmethods(ChipWidget, Frame, '__chip') + + + +if __name__ == '__main__': + root = Pmw.initialise(fontScheme='pmw1') + root.title('ChipWidget demonstration') + + exitbtn = Button(root, text='Exit', command=root.destroy) + exitbtn.pack(side=BOTTOM) + widget = ChipWidget(root, chipcolor='red', width=200, + text='Selected Color') + widget.pack() + root.mainloop()