Welcome folks today in this blog post we will be building a random color generator
with preview inside tkinter using python. All the full source code of the application is given below.
Get Started
In order to get started you need to make an app.py
file and copy paste the following code
app.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
#!/usr/bin/env python import tkinter as Tkinter FONT = ('courier new',24,'bold') def main(): mainWindow = Tkinter.Tk() mainWindow.title("Color Preview") mainFrame = Tkinter.Frame(mainWindow) mainFrame.pack(side=Tkinter.RIGHT, expand=Tkinter.YES, fill=Tkinter.BOTH) colorSpace = ColorCanvas(mainWindow) redScale = Tkinter.Scale(mainFrame,orient = Tkinter.HORIZONTAL,from_=0,to=255,relief = Tkinter.RAISED,length=300,sliderlength=20,resolution=1, command=colorSpace.setRed) greenScale = Tkinter.Scale(mainFrame,orient = Tkinter.HORIZONTAL,from_=0,to=255,relief = Tkinter.RAISED,length=300,sliderlength=20,resolution=1, command=colorSpace.setGreen) blueScale = Tkinter.Scale(mainFrame,orient = Tkinter.HORIZONTAL,from_=0,to=255,relief = Tkinter.RAISED,length=300,sliderlength=20,resolution=1, command=colorSpace.setBlue) redLabel = Tkinter.Label(mainFrame, text="Red") greenLabel = Tkinter.Label(mainFrame, text="Green") blueLabel = Tkinter.Label(mainFrame, text="Blue") colorSpace.addScales(redScale, greenScale, blueScale) colorSpace.pack(side=Tkinter.LEFT, fill=Tkinter.BOTH) redLabel.pack(side=Tkinter.TOP) redScale.pack(side=Tkinter.TOP, expand=Tkinter.YES, fill=Tkinter.Y) greenLabel.pack(side=Tkinter.TOP) greenScale.pack(side=Tkinter.TOP, expand=Tkinter.YES, fill=Tkinter.Y) blueLabel.pack(side=Tkinter.TOP) blueScale.pack(side=Tkinter.TOP, expand=Tkinter.YES, fill=Tkinter.Y) mainWindow.protocol('WM_DELETE_WINDOW', mainWindow.destroy) mainWindow.mainloop() class ColorCanvas(Tkinter.Canvas): def __init__(self, master, *args, **kwargs): Tkinter.Canvas.__init__(self, master, *args, **kwargs) self.__redScale, self.__greenScale, self.__blueScale = [False] * 3 self.__t = self.create_text(10, 10, text='', font=FONT, anchor=Tkinter.NW) try: self.__red = int(kwargs['background'][1:3], 16) self.__green = int(kwargs['background'][3:5], 16) self.__blue = int(kwargs['background'][5:], 16) except: self.__red, self.__green, self.__blue = [0] * 3 def addScales(self, redScale, greenScale, blueScale): self.__redScale, self.__greenScale, self.__blueScale = redScale, greenScale, blueScale def toHex(self, integer): if integer < 16: return '0%s' % hex(integer)[2:] else: return '%s' % hex(integer)[2:] def showHexColor(self, colorstring): if (self.__red + self.__green + self.__blue) / 3 > 128: textcolor = '#000000' else: textcolor = '#ffffff' self.itemconfigure(self.__t, text=colorstring, fill=textcolor) def setRed(self, event=None): if self.__redScale: self.__red = self.__redScale.get() colorstring = '#%s%s%s' % (self.toHex(self.__red), self.toHex(self.__green), self.toHex(self.__blue)) self.configure(background=colorstring) self.showHexColor(colorstring) def setGreen(self, event=None): if self.__greenScale: self.__green = self.__greenScale.get() colorstring = '#%s%s%s' % (self.toHex(self.__red), self.toHex(self.__green), self.toHex(self.__blue)) self.configure(background=colorstring) self.showHexColor(colorstring) def setBlue(self, event=None): if self.__blueScale: self.__blue = self.__blueScale.get() colorstring = '#%s%s%s' % (self.toHex(self.__red), self.toHex(self.__green), self.toHex(self.__blue)) self.configure(background=colorstring) self.showHexColor(colorstring) main() |
Now just execute the python
script by typing the below command as shown below
python app.py