rendered paste bodyclass GreyBlox(Frame): __BLOCK_WIDTH = 80 __BLOCK_HEIGHT = 30 __SCALE_LENGTH = 480 __SCALE_INIT = 50 def __init__(self): self.master = Tk() Frame.__init__(self, self.master) self.pack() self.rp = self.__SCALE_INIT self.gp = self.__SCALE_INIT self.bp = self.__SCALE_INIT self.brightp = self.__SCALE_INIT self.base_r = None self.base_g = None self.base_b = None self.base_max = None self.doInterface() self.mainloop() def doInterface(self): self.targ_block = Text(self) self.targ_block["width"] = self.__BLOCK_WIDTH self.targ_block["height"] = self.__BLOCK_HEIGHT self.targ_block["bg"] = "black" self.targ_block.pack() self.shade_slide_bright = Scale(self) self.shade_slide_bright["command"] = self.tweakBright self.shade_slide_bright["orient"] = "horiz" self.shade_slide_bright["length"] = self.__SCALE_LENGTH self.shade_slide_bright.set(self.brightp) self.shade_slide_bright.pack() self.shade_slide_r = Scale(self) self.shade_slide_r["command"] = self.tweakR self.shade_slide_r["orient"] = "horiz" self.shade_slide_r["bg"] = "red" self.shade_slide_r["length"] = self.__SCALE_LENGTH self.shade_slide_r.set(self.rp) self.shade_slide_r.pack() self.shade_slide_g = Scale(self) self.shade_slide_g["command"] = self.tweakG self.shade_slide_g["orient"] = "horiz" self.shade_slide_g["bg"] = "green" self.shade_slide_g["length"] = self.__SCALE_LENGTH self.shade_slide_g.set(self.gp) self.shade_slide_g.pack() self.shade_slide_b = Scale(self) self.shade_slide_b["command"] = self.tweakB self.shade_slide_b["orient"] = "horiz" self.shade_slide_b["bg"] = "blue" self.shade_slide_b["length"] = self.__SCALE_LENGTH self.shade_slide_b.set(self.bp) self.shade_slide_b.pack() def __scaleToHex255(self, scale_as_int): col = "%X" % int(scale_as_int * 2.55) if len(col) < 2: col = "0" + col return col def __triScaleToHexRGB(self, r_as_int, g_as_int, b_as_int): return "#" + self.__scaleToHex255(r_as_int) + self.__scaleToHex255(g_as_int) + self.__scaleToHex255(b_as_int) def __updateBlock(self): self.targ_block["bg"] = self.__triScaleToHexRGB(self.rp, self.gp, self.bp) def __maxPosition(self): return max([self.rp, self.gp, self.bp]) def __brightAdjust(self, value, diff, current, base, base_max): if current < 1 and base < base_max: if value >= base_max - base: return max([current + diff, 0]) else: return 0 else: return current + diff def jiggleBright(self, value): if self.brightp != self.__maxPosition(): if value > self.brightp or (value == self.__maxPosition() and value < self.brightp): self.brightDrop(value) elif self.__maxPosition() < self.brightp: self.brightDrop(self.__maxPosition()) def tweakR(self, value): self.rp = math.ceil(float(value)) self.jiggleBright(self.rp) self.__updateBlock() def tweakG(self, value): self.gp = math.ceil(float(value)) self.jiggleBright(self.gp) self.__updateBlock() def tweakB(self, value): self.bp = math.ceil(float(value)) self.jiggleBright(self.bp) self.__updateBlock() def brightDrop(self, value): self.shade_slide_bright.set(value) def tweakBright(self, value): thisbright = math.ceil(float(value)) if thisbright != self.__maxPosition(): if not self.base_r and not self.base_g and not self.base_b and not self.base_max: self.base_r = self.rp self.base_g = self.gp self.base_b = self.bp self.base_max = self.__maxPosition() diff = thisbright - self.brightp if self.shade_slide_r.set(self.__brightAdjust(thisbright, diff, self.rp, self.base_r, self.base_max)) self.shade_slide_g.set(self.__brightAdjust(thisbright, diff, self.gp, self.base_g, self.base_max)) self.shade_slide_b.set(self.__brightAdjust(thisbright, diff, self.bp, self.base_b, self.base_max)) else: self.base_r, self.base_g, self.base_b, self.base_max = None, None, None, None self.brightp = int(value)