Boston Python workshop/Saturday/ColorWall: Difference between revisions
imported>Paulproteus (moved Boston Python workshop/Saturday/ColorWall to Boston Python Workshop/Saturday/ColorWall: Proper nouns, all the way) |
imported>Jesstess No edit summary |
||
Line 1: | Line 1: | ||
== Project == |
|||
#REDIRECT [[Boston Python Workshop/Saturday/ColorWall]] |
|||
Program graphical effects for a ColorWall using the Tkinter GUI toolkit. |
|||
== Goals == |
|||
* Have fun experiment with and creating graphical effects. |
|||
* Practice using functions and classes. |
|||
* Get experience with graphics programming using the Tkinter GUI toolkit. |
|||
== Project setup == |
|||
=== Download and un-archive the ColorWall project skeleton code === |
|||
* http://web.mit.edu/jesstess/www/BostonPythonWorkshop6/ColorWall.zip |
|||
Un-archiving will produce a <code>ColorWall</code> folder containing several Python files, including: run.py, effects.py, and advanced_effects.py. |
|||
=== Test your setup === |
|||
From a command prompt, navigate to the <code>ColorWall</code> directory and run |
|||
<pre>python run.py -a</pre> |
|||
You should see a window pop up and start cycling through colorful effects. If you don't, let a staff member know so you can debug this together. |
|||
== Project steps == |
|||
=== 1. Learn about HSV values === |
|||
Run the ColorWall effects again with |
|||
<pre>python run.py -a</pre> |
|||
The names of the effects are printed to the terminal as they are run. Pay particular attention to the first 4 effects: |
|||
* SolidColorTest |
|||
* HueTest |
|||
* SaturationTest |
|||
* ValueTest |
|||
What are the differences between these tests? Given these difference and how they are expressed visually, how does varying hue, saturation, or value change a color? |
|||
=== 2. Examine <code>Effect</code> and the interface its subclasses provide === |
|||
All of the effects inherit from the <code>Effect</code> class. Examine this class and its <code>__init__</code> and <code>run</code> methods. |
|||
==Suggested exercises== |
|||
<ul> |
|||
<li> |
|||
Find and change the colors used in the <code>Checkerboards</code> effect, and re-run the effect: |
|||
<pre> |
|||
python run.py Checkerboards |
|||
</pre> |
|||
Then change the line |
|||
<pre> |
|||
if (x + y + i) % 2 == 0: |
|||
</pre> |
|||
to |
|||
<pre> |
|||
if (x + y + i) % 3 == 0: |
|||
</pre> |
|||
re-run the effect, and see what changed. |
|||
</li> |
|||
<li> |
|||
Find and change the color of the columns in the <code>Matrix</code> effect, and re-run the effect: |
|||
<pre> |
|||
python run.py Matrix |
|||
</pre> |
|||
Each column that we see on the wall corresponds to a <code>Column</code> object. Add some randomness to the color used by each column (the variable whose value you changed above) using the <code>random.random</code> function, re-run the effect, and see what happens. |
|||
</li> |
|||
<li> |
|||
Walk through <code>Twinkle</code>. Find explanations of the <code>random.randint</code> and <code>random.uniform</code> functions in the online documentation at |
|||
http://docs.python.org/library/random.html. |
|||
Experiment with these functions at a Python prompt: |
|||
<pre> |
|||
import random |
|||
random.randint(0, 1) |
|||
random.randint(0, 5) |
|||
random.uniform(-1, 1) |
|||
</pre> |
|||
Then experiment with the numbers that make up the hue and re-run the effect: |
|||
<pre> |
|||
python run.py Twinkle |
|||
</pre> |
|||
</li> |
|||
<li> |
|||
Write your own effects! |
|||
</li> |
|||
</ul> |
|||
==Some Useful Links== |
|||
If you choose to use HSV colors you define instead of the dictionary, you may find some of the following useful: |
|||
* [http://www.yafla.com/yaflaColor/ColorRGBHSL.aspx A graphical HSV color picking website] |
|||
* [http://en.wikipedia.org/wiki/HSL_and_HSV HSV on Wikipedia] |
|||
* [http://docs.python.org/library/random.html Python random library] |
|||
* [http://docs.python.org/library/time.html Python time library] |
|||
[[Boston Python workshop 2/Saturday projects|« Back to the Saturday project page]] |
Revision as of 02:02, 5 July 2012
Project
Program graphical effects for a ColorWall using the Tkinter GUI toolkit.
Goals
- Have fun experiment with and creating graphical effects.
- Practice using functions and classes.
- Get experience with graphics programming using the Tkinter GUI toolkit.
Project setup
Download and un-archive the ColorWall project skeleton code
Un-archiving will produce a ColorWall
folder containing several Python files, including: run.py, effects.py, and advanced_effects.py.
Test your setup
From a command prompt, navigate to the ColorWall
directory and run
python run.py -a
You should see a window pop up and start cycling through colorful effects. If you don't, let a staff member know so you can debug this together.
Project steps
1. Learn about HSV values
Run the ColorWall effects again with
python run.py -a
The names of the effects are printed to the terminal as they are run. Pay particular attention to the first 4 effects:
- SolidColorTest
- HueTest
- SaturationTest
- ValueTest
What are the differences between these tests? Given these difference and how they are expressed visually, how does varying hue, saturation, or value change a color?
2. Examine Effect
and the interface its subclasses provide
All of the effects inherit from the Effect
class. Examine this class and its __init__
and run
methods.
Suggested exercises
-
Find and change the colors used in the
Checkerboards
effect, and re-run the effect:python run.py Checkerboards
Then change the line
if (x + y + i) % 2 == 0:
to
if (x + y + i) % 3 == 0:
re-run the effect, and see what changed.
-
Find and change the color of the columns in the
Matrix
effect, and re-run the effect:python run.py Matrix
Each column that we see on the wall corresponds to a
Column
object. Add some randomness to the color used by each column (the variable whose value you changed above) using therandom.random
function, re-run the effect, and see what happens. -
Walk through
Twinkle
. Find explanations of therandom.randint
andrandom.uniform
functions in the online documentation at http://docs.python.org/library/random.html. Experiment with these functions at a Python prompt:import random random.randint(0, 1) random.randint(0, 5) random.uniform(-1, 1)
Then experiment with the numbers that make up the hue and re-run the effect:
python run.py Twinkle
- Write your own effects!
Some Useful Links
If you choose to use HSV colors you define instead of the dictionary, you may find some of the following useful: