set colorlist [list \ {255 250 250 snow} \ {248 248 255 GhostWhite} \ {245 245 245 WhiteSmoke} \ {220 220 220 gainsboro} \ {255 250 240 FloralWhite} \ {253 245 230 OldLace} \ {250 240 230 linen} \ {250 235 215 AntiqueWhite} \ {255 239 213 PapayaWhip} \ {255 235 205 BlanchedAlmond} \ {255 228 196 bisque} \ {255 218 185 PeachPuff} \ {255 222 173 NavajoWhite} \ {255 228 181 moccasin} \ {255 248 220 cornsilk} \ {255 255 240 ivory} \ {255 250 205 LemonChiffon} \ {255 245 238 seashell} \ {240 255 240 honeydew} \ {245 255 250 MintCream} \ {240 255 255 azure} \ {240 248 255 AliceBlue} \ {230 230 250 lavender} \ {255 240 245 LavenderBlush} \ {255 228 225 MistyRose} \ {255 255 255 white} \ {0 0 0 black} \ {47 79 79 DarkSlateGray} \ {105 105 105 DimGray} \ {112 128 144 SlateGray} \ {119 136 153 LightSlateGray} \ {190 190 190 gray} \ {211 211 211 LightGray} \ {25 25 112 MidnightBlue} \ {0 0 128 NavyBlue} \ {100 149 237 CornflowerBlue} \ {72 61 139 DarkSlateBlue} \ {106 90 205 SlateBlue} \ {123 104 238 MediumSlateBlue} \ {132 112 255 LightSlateBlue} \ {0 0 205 MediumBlue} \ {65 105 225 RoyalBlue} \ {0 0 255 blue} \ {30 144 255 DodgerBlue} \ {0 191 255 DeepSkyBlue} \ {135 206 235 SkyBlue} \ {135 206 250 LightSkyBlue} \ {70 130 180 SteelBlue} \ {176 196 222 LightSteelBlue} \ {173 216 230 LightBlue} \ {176 224 230 PowderBlue} \ {175 238 238 PaleTurquoise} \ {0 206 209 DarkTurquoise} \ {72 209 204 MediumTurquoise} \ {64 224 208 turquoise} \ {0 255 255 cyan} \ {224 255 255 LightCyan} \ {95 158 160 CadetBlue} \ {102 205 170 MediumAquamarine} \ {127 255 212 aquamarine} \ {0 100 0 DarkGreen} \ {85 107 47 DarkOliveGreen} \ {143 188 143 DarkSeaGreen} \ {46 139 87 SeaGreen} \ {60 179 113 MediumSeaGreen} \ {32 178 170 LightSeaGreen} \ {152 251 152 PaleGreen} \ {0 255 127 SpringGreen} \ {124 252 0 LawnGreen} \ {0 255 0 green} \ {127 255 0 chartreuse} \ {0 250 154 MediumSpringGreen} \ {173 255 47 GreenYellow} \ {50 205 50 LimeGreen} \ {154 205 50 YellowGreen} \ {34 139 34 ForestGreen} \ {107 142 35 OliveDrab} \ {189 183 107 DarkKhaki} \ {240 230 140 khaki} \ {238 232 170 PaleGoldenrod} \ {250 250 210 LightGoldenrodYellow} \ {255 255 224 LightYellow} \ {255 255 0 yellow} \ {255 215 0 gold} \ {238 221 130 LightGoldenrod} \ {218 165 32 goldenrod} \ {184 134 11 DarkGoldenrod} \ {188 143 143 RosyBrown} \ {205 92 92 IndianRed} \ {139 69 19 SaddleBrown} \ {160 82 45 sienna} \ {205 133 63 peru} \ {222 184 135 burlywood} \ {245 245 220 beige} \ {245 222 179 wheat} \ {244 164 96 SandyBrown} \ {210 180 140 tan} \ {210 105 30 chocolate} \ {178 34 34 firebrick} \ {165 42 42 brown} \ {233 150 122 DarkSalmon} \ {250 128 114 salmon} \ {255 160 122 LightSalmon} \ {255 165 0 orange} \ {255 140 0 DarkOrange} \ {255 127 80 coral} \ {240 128 128 LightCoral} \ {255 99 71 tomato} \ {255 69 0 OrangeRed} \ {255 0 0 red} \ {255 105 180 HotPink} \ {255 20 147 DeepPink} \ {255 192 203 pink} \ {255 182 193 LightPink} \ {219 112 147 PaleVioletRed} \ {176 48 96 maroon} \ {199 21 133 MediumVioletRed} \ {208 32 144 VioletRed} \ {255 0 255 magenta} \ {238 130 238 violet} \ {221 160 221 plum} \ {218 112 214 orchid} \ {186 85 211 MediumOrchid} \ {153 50 204 DarkOrchid} \ {148 0 211 DarkViolet} \ {138 43 226 BlueViolet} \ {160 32 240 purple} \ {147 112 219 MediumPurple} \ {216 191 216 thistle} \ {255 250 250 snow1} \ {238 233 233 snow2} \ {205 201 201 snow3} \ {139 137 137 snow4} \ {255 245 238 seashell1} \ {238 229 222 seashell2} \ {205 197 191 seashell3} \ {139 134 130 seashell4} \ {255 239 219 AntiqueWhite1} \ {238 223 204 AntiqueWhite2} \ {205 192 176 AntiqueWhite3} \ {139 131 120 AntiqueWhite4} \ {255 228 196 bisque1} \ {238 213 183 bisque2} \ {205 183 158 bisque3} \ {139 125 107 bisque4} \ {255 218 185 PeachPuff1} \ {238 203 173 PeachPuff2} \ {205 175 149 PeachPuff3} \ {139 119 101 PeachPuff4} \ {255 222 173 NavajoWhite1} \ {238 207 161 NavajoWhite2} \ {205 179 139 NavajoWhite3} \ {139 121 94 NavajoWhite4} \ {255 250 205 LemonChiffon1} \ {238 233 191 LemonChiffon2} \ {205 201 165 LemonChiffon3} \ {139 137 112 LemonChiffon4} \ {255 248 220 cornsilk1} \ {238 232 205 cornsilk2} \ {205 200 177 cornsilk3} \ {139 136 120 cornsilk4} \ {255 255 240 ivory1} \ {238 238 224 ivory2} \ {205 205 193 ivory3} \ {139 139 131 ivory4} \ {240 255 240 honeydew1} \ {224 238 224 honeydew2} \ {193 205 193 honeydew3} \ {131 139 131 honeydew4} \ {255 240 245 LavenderBlush1} \ {238 224 229 LavenderBlush2} \ {205 193 197 LavenderBlush3} \ {139 131 134 LavenderBlush4} \ {255 228 225 MistyRose1} \ {238 213 210 MistyRose2} \ {205 183 181 MistyRose3} \ {139 125 123 MistyRose4} \ {240 255 255 azure1} \ {224 238 238 azure2} \ {193 205 205 azure3} \ {131 139 139 azure4} \ {131 111 255 SlateBlue1} \ {122 103 238 SlateBlue2} \ {105 89 205 SlateBlue3} \ {71 60 139 SlateBlue4} \ {72 118 255 RoyalBlue1} \ {67 110 238 RoyalBlue2} \ {58 95 205 RoyalBlue3} \ {39 64 139 RoyalBlue4} \ {0 0 255 blue1} \ {0 0 238 blue2} \ {0 0 205 blue3} \ {0 0 139 blue4} \ {30 144 255 DodgerBlue1} \ {28 134 238 DodgerBlue2} \ {24 116 205 DodgerBlue3} \ {16 78 139 DodgerBlue4} \ {99 184 255 SteelBlue1} \ {92 172 238 SteelBlue2} \ {79 148 205 SteelBlue3} \ {54 100 139 SteelBlue4} \ {0 191 255 DeepSkyBlue1} \ {0 178 238 DeepSkyBlue2} \ {0 154 205 DeepSkyBlue3} \ {0 104 139 DeepSkyBlue4} \ {135 206 255 SkyBlue1} \ {126 192 238 SkyBlue2} \ {108 166 205 SkyBlue3} \ {74 112 139 SkyBlue4} \ {176 226 255 LightSkyBlue1} \ {164 211 238 LightSkyBlue2} \ {141 182 205 LightSkyBlue3} \ {96 123 139 LightSkyBlue4} \ {198 226 255 SlateGray1} \ {185 211 238 SlateGray2} \ {159 182 205 SlateGray3} \ {108 123 139 SlateGray4} \ {202 225 255 LightSteelBlue1} \ {188 210 238 LightSteelBlue2} \ {162 181 205 LightSteelBlue3} \ {110 123 139 LightSteelBlue4} \ {191 239 255 LightBlue1} \ {178 223 238 LightBlue2} \ {154 192 205 LightBlue3} \ {104 131 139 LightBlue4} \ {224 255 255 LightCyan1} \ {209 238 238 LightCyan2} \ {180 205 205 LightCyan3} \ {122 139 139 LightCyan4} \ {187 255 255 PaleTurquoise1} \ {174 238 238 PaleTurquoise2} \ {150 205 205 PaleTurquoise3} \ {102 139 139 PaleTurquoise4} \ {152 245 255 CadetBlue1} \ {142 229 238 CadetBlue2} \ {122 197 205 CadetBlue3} \ {83 134 139 CadetBlue4} \ {0 245 255 turquoise1} \ {0 229 238 turquoise2} \ {0 197 205 turquoise3} \ {0 134 139 turquoise4} \ {0 255 255 cyan1} \ {0 238 238 cyan2} \ {0 205 205 cyan3} \ {0 139 139 cyan4} \ {151 255 255 DarkSlateGray1} \ {141 238 238 DarkSlateGray2} \ {121 205 205 DarkSlateGray3} \ {82 139 139 DarkSlateGray4} \ {127 255 212 aquamarine1} \ {118 238 198 aquamarine2} \ {102 205 170 aquamarine3} \ {69 139 116 aquamarine4} \ {193 255 193 DarkSeaGreen1} \ {180 238 180 DarkSeaGreen2} \ {155 205 155 DarkSeaGreen3} \ {105 139 105 DarkSeaGreen4} \ {84 255 159 SeaGreen1} \ {78 238 148 SeaGreen2} \ {67 205 128 SeaGreen3} \ {46 139 87 SeaGreen4} \ {154 255 154 PaleGreen1} \ {144 238 144 PaleGreen2} \ {124 205 124 PaleGreen3} \ {84 139 84 PaleGreen4} \ {0 255 127 SpringGreen1} \ {0 238 118 SpringGreen2} \ {0 205 102 SpringGreen3} \ {0 139 69 SpringGreen4} \ {0 255 0 green1} \ {0 238 0 green2} \ {0 205 0 green3} \ {0 139 0 green4} \ {127 255 0 chartreuse1} \ {118 238 0 chartreuse2} \ {102 205 0 chartreuse3} \ {69 139 0 chartreuse4} \ {192 255 62 OliveDrab1} \ {179 238 58 OliveDrab2} \ {154 205 50 OliveDrab3} \ {105 139 34 OliveDrab4} \ {202 255 112 DarkOliveGreen1} \ {188 238 104 DarkOliveGreen2} \ {162 205 90 DarkOliveGreen3} \ {110 139 61 DarkOliveGreen4} \ {255 246 143 khaki1} \ {238 230 133 khaki2} \ {205 198 115 khaki3} \ {139 134 78 khaki4} \ {255 236 139 LightGoldenrod1} \ {238 220 130 LightGoldenrod2} \ {205 190 112 LightGoldenrod3} \ {139 129 76 LightGoldenrod4} \ {255 255 224 LightYellow1} \ {238 238 209 LightYellow2} \ {205 205 180 LightYellow3} \ {139 139 122 LightYellow4} \ {255 255 0 yellow1} \ {238 238 0 yellow2} \ {205 205 0 yellow3} \ {139 139 0 yellow4} \ {255 215 0 gold1} \ {238 201 0 gold2} \ {205 173 0 gold3} \ {139 117 0 gold4} \ {255 193 37 goldenrod1} \ {238 180 34 goldenrod2} \ {205 155 29 goldenrod3} \ {139 105 20 goldenrod4} \ {255 185 15 DarkGoldenrod1} \ {238 173 14 DarkGoldenrod2} \ {205 149 12 DarkGoldenrod3} \ {139 101 8 DarkGoldenrod4} \ {255 193 193 RosyBrown1} \ {238 180 180 RosyBrown2} \ {205 155 155 RosyBrown3} \ {139 105 105 RosyBrown4} \ {255 106 106 IndianRed1} \ {238 99 99 IndianRed2} \ {205 85 85 IndianRed3} \ {139 58 58 IndianRed4} \ {255 130 71 sienna1} \ {238 121 66 sienna2} \ {205 104 57 sienna3} \ {139 71 38 sienna4} \ {255 211 155 burlywood1} \ {238 197 145 burlywood2} \ {205 170 125 burlywood3} \ {139 115 85 burlywood4} \ {255 231 186 wheat1} \ {238 216 174 wheat2} \ {205 186 150 wheat3} \ {139 126 102 wheat4} \ {255 165 79 tan1} \ {238 154 73 tan2} \ {205 133 63 tan3} \ {139 90 43 tan4} \ {255 127 36 chocolate1} \ {238 118 33 chocolate2} \ {205 102 29 chocolate3} \ {139 69 19 chocolate4} \ {255 48 48 firebrick1} \ {238 44 44 firebrick2} \ {205 38 38 firebrick3} \ {139 26 26 firebrick4} \ {255 64 64 brown1} \ {238 59 59 brown2} \ {205 51 51 brown3} \ {139 35 35 brown4} \ {255 140 105 salmon1} \ {238 130 98 salmon2} \ {205 112 84 salmon3} \ {139 76 57 salmon4} \ {255 160 122 LightSalmon1} \ {238 149 114 LightSalmon2} \ {205 129 98 LightSalmon3} \ {139 87 66 LightSalmon4} \ {255 165 0 orange1} \ {238 154 0 orange2} \ {205 133 0 orange3} \ {139 90 0 orange4} \ {255 127 0 DarkOrange1} \ {238 118 0 DarkOrange2} \ {205 102 0 DarkOrange3} \ {139 69 0 DarkOrange4} \ {255 114 86 coral1} \ {238 106 80 coral2} \ {205 91 69 coral3} \ {139 62 47 coral4} \ {255 99 71 tomato1} \ {238 92 66 tomato2} \ {205 79 57 tomato3} \ {139 54 38 tomato4} \ {255 69 0 OrangeRed1} \ {238 64 0 OrangeRed2} \ {205 55 0 OrangeRed3} \ {139 37 0 OrangeRed4} \ {255 0 0 red1} \ {238 0 0 red2} \ {205 0 0 red3} \ {139 0 0 red4} \ {255 20 147 DeepPink1} \ {238 18 137 DeepPink2} \ {205 16 118 DeepPink3} \ {139 10 80 DeepPink4} \ {255 110 180 HotPink1} \ {238 106 167 HotPink2} \ {205 96 144 HotPink3} \ {139 58 98 HotPink4} \ {255 181 197 pink1} \ {238 169 184 pink2} \ {205 145 158 pink3} \ {139 99 108 pink4} \ {255 174 185 LightPink1} \ {238 162 173 LightPink2} \ {205 140 149 LightPink3} \ {139 95 101 LightPink4} \ {255 130 171 PaleVioletRed1} \ {238 121 159 PaleVioletRed2} \ {205 104 137 PaleVioletRed3} \ {139 71 93 PaleVioletRed4} \ {255 52 179 maroon1} \ {238 48 167 maroon2} \ {205 41 144 maroon3} \ {139 28 98 maroon4} \ {255 62 150 VioletRed1} \ {238 58 140 VioletRed2} \ {205 50 120 VioletRed3} \ {139 34 82 VioletRed4} \ {255 0 255 magenta1} \ {238 0 238 magenta2} \ {205 0 205 magenta3} \ {139 0 139 magenta4} \ {255 131 250 orchid1} \ {238 122 233 orchid2} \ {205 105 201 orchid3} \ {139 71 137 orchid4} \ {255 187 255 plum1} \ {238 174 238 plum2} \ {205 150 205 plum3} \ {139 102 139 plum4} \ {224 102 255 MediumOrchid1} \ {209 95 238 MediumOrchid2} \ {180 82 205 MediumOrchid3} \ {122 55 139 MediumOrchid4} \ {191 62 255 DarkOrchid1} \ {178 58 238 DarkOrchid2} \ {154 50 205 DarkOrchid3} \ {104 34 139 DarkOrchid4} \ {155 48 255 purple1} \ {145 44 238 purple2} \ {125 38 205 purple3} \ {85 26 139 purple4} \ {171 130 255 MediumPurple1} \ {159 121 238 MediumPurple2} \ {137 104 205 MediumPurple3} \ {93 71 139 MediumPurple4} \ {255 225 255 thistle1} \ {238 210 238 thistle2} \ {205 181 205 thistle3} \ {139 123 139 thistle4} \ {169 169 169 DarkGray} \ {0 0 139 DarkBlue} \ {0 139 139 DarkCyan} \ {139 0 139 DarkMagenta} \ {139 0 0 DarkRed} \ {144 238 144 LightGreen}] set colorlist [lsort -dictionary -index end $colorlist] # Procedure for setting up color selection box: # RGB Color-setting Scale # from Graphical Applications with Tcl and Tk, 2nd edition, Chapter 3 # by Eric Foster-Johnson # modified by David McClamrock # Thanks to Ulrich Schöbel for suggesting that I add color names, # and for contributing some code! proc wishcolor {} { # Set variables for red, green, blue, color selected, # and hexadecimal code color; set background # (number 128 will be midpoint of color scale): global red green blue color hex colorlist showname toplevel .colo wm title .colo "WISH Color Picker" tk_setPalette background bisque selectBackground cyan set red 255 set green 204 set blue 153 set color "" set showname nothing set hex black grid [label .colo.pick -text "Right-click or double left-click\ color name (or move sliders)" -bg "#FFF0E4" -pady 4] \ -row 0 -column 0 -columnspan 5 -sticky news # Sliding scale to change the amount of red: set scaleng 200 ; # Length of scales set scalwid 12 ; # Width of scales set slidleng 24 ; # Length of sliders grid [label .colo.reddo -text "Red : "] \ -row 1 -column 0 -sticky news grid [scale .colo.red -from 0 -to 255 -orient horizontal \ -length $scaleng -width $scalwid -sliderlength $slidleng \ -variable red -activebackground red -tickinterval 64 \ -command "modify_color red"] \ -row 1 -column 1 -columnspan 2 -sticky news # Same for green and blue: grid [label .colo.greeno -text "Green : "] \ -row 2 -column 0 -sticky news grid [scale .colo.green -from 0 -to 255 -orient horizontal \ -length $scaleng -width $scalwid -sliderlength $slidleng \ -variable green -activebackground green -tickinterval 64 \ -command "modify_color green"] \ -row 2 -column 1 -columnspan 2 -sticky news grid [label .colo.bluey -text "Blue : "] \ -row 3 -column 0 -sticky news grid [scale .colo.blue -from 0 -to 255 -orient horizontal \ -length $scaleng -width $scalwid -sliderlength $slidleng \ -variable blue -activebackground blue -tickinterval 64 \ -command "modify_color blue"] \ -row 3 -column 1 -columnspan 2 -sticky news foreach scala [list .colo.red .colo.green .colo.blue] { bind $scala <ButtonRelease-1> { catch {.colo.list selection clear 0 end} } } # Scrolling listbox for color names: grid [listbox .colo.list -bg "#FFFFF0" -width 20] \ -row 1 -column 3 -rowspan 4 -sticky news grid [scrollbar .colo.rolly -width 12 -command ".colo.list yview"] \ -row 1 -column 4 -rowspan 4 -sticky news .colo.list configure -yscrollcommand ".colo.rolly set" foreach couleur $colorlist { .colo.list insert end [lindex $couleur end] } .colo.rolly configure -command ".colo.list yview" bind .colo.list <Double-Button-1> { set item [.colo.list curselection] set showname [.colo.list get $item] pickname $item } bind .colo.list <Button-3> { .colo.list selection clear 0 end set clixel %y set clickline [.colo.list nearest $clixel] .colo.list selection set $clickline $clickline set item [.colo.list curselection] set showname [.colo.list get $item] pickname $item } # Labeled button to show the color selected: grid [label .colo.pico -text "PICK: "] -row 4 -column 0 -sticky news grid [button .colo.color -textvariable color -border 4 -pady 4] \ -row 4 -column 1 -sticky news grid [button .colo.close -text "Close" -command {destroy .colo}] \ -row 4 -column 2 -sticky news # Tell the color-selection button what to do # (modify this to fit the purpose at hand): .colo.color configure -command {puts $color} } # Procedure for changing the color selected: proc modify_color {which_color value} { global color red green blue showname switch $which_color { red {set red $value} green {set green $value} blue {set blue $value} } if {[expr $red + $green + $blue < 480] && \ [expr $green < 180]} { set hex white } else { set hex black } if {$color ne $showname} { set color [format "#%2.2X%2.2X%2.2X" \ $red $green $blue] } .colo.color configure -background $color \ -foreground $hex } # Procedure for getting a color name selection # to make the sliders move and the color code change: proc pickname {item} { global color colorlist red green blue showname set listline [lindex $colorlist $item] set red [lindex $listline 0] modify_color red $red set green [lindex $listline 1] modify_color green $green set blue [lindex $listline 2] modify_color blue $blue set color $showname set showname nothing } # Test in interactive mode, after saving as "wishcolor.tcl": source wishcolor.tcl wish color
RLH 2005-11-17: I would have expected the scrollbar for the colors to be on the right and not the left.D. McC Nov 18 2005 - Many months ago, if I recall correctly, I tried putting it on the right, and I thought it looked funny because there wasn't a clear enough separation between the listbox (which scrolled) and the scales (which didn't). Today I tried it again, and it looked OK on the right after all, so I changed the code above to put it on the right. Thanks!