1998-01-26 12:47:30 -04:00
|
|
|
""""Paint program by Dave Michell.
|
|
|
|
|
|
|
|
Subject: tkinter "paint" example
|
|
|
|
From: Dave Mitchell <davem@magnet.com>
|
|
|
|
To: python-list@cwi.nl
|
|
|
|
Date: Fri, 23 Jan 1998 12:18:05 -0500 (EST)
|
|
|
|
|
|
|
|
Not too long ago (last week maybe?) someone posted a request
|
|
|
|
for an example of a paint program using Tkinter. Try as I might
|
|
|
|
I can't seem to find it in the archive, so i'll just post mine
|
|
|
|
here and hope that the person who requested it sees this!
|
|
|
|
|
|
|
|
All this does is put up a canvas and draw a smooth black line
|
|
|
|
whenever you have the mouse button down, but hopefully it will
|
2004-07-18 03:16:08 -03:00
|
|
|
be enough to start with.. It would be easy enough to add some
|
1998-01-26 12:47:30 -04:00
|
|
|
options like other shapes or colors...
|
|
|
|
|
2004-07-18 03:16:08 -03:00
|
|
|
yours,
|
|
|
|
dave mitchell
|
|
|
|
davem@magnet.com
|
1998-01-26 12:47:30 -04:00
|
|
|
"""
|
|
|
|
|
|
|
|
from Tkinter import *
|
|
|
|
|
|
|
|
"""paint.py: not exactly a paint program.. just a smooth line drawing demo."""
|
|
|
|
|
|
|
|
b1 = "up"
|
|
|
|
xold, yold = None, None
|
|
|
|
|
|
|
|
def main():
|
2004-07-18 03:16:08 -03:00
|
|
|
root = Tk()
|
|
|
|
drawing_area = Canvas(root)
|
|
|
|
drawing_area.pack()
|
|
|
|
drawing_area.bind("<Motion>", motion)
|
|
|
|
drawing_area.bind("<ButtonPress-1>", b1down)
|
|
|
|
drawing_area.bind("<ButtonRelease-1>", b1up)
|
|
|
|
root.mainloop()
|
1998-01-26 12:47:30 -04:00
|
|
|
|
|
|
|
def b1down(event):
|
2004-07-18 03:16:08 -03:00
|
|
|
global b1
|
|
|
|
b1 = "down" # you only want to draw when the button is down
|
|
|
|
# because "Motion" events happen -all the time-
|
1998-01-26 12:47:30 -04:00
|
|
|
|
|
|
|
def b1up(event):
|
2004-07-18 03:16:08 -03:00
|
|
|
global b1, xold, yold
|
|
|
|
b1 = "up"
|
|
|
|
xold = None # reset the line when you let go of the button
|
|
|
|
yold = None
|
1998-01-26 12:47:30 -04:00
|
|
|
|
|
|
|
def motion(event):
|
2004-07-18 03:16:08 -03:00
|
|
|
if b1 == "down":
|
|
|
|
global xold, yold
|
Merged revisions 62021,62029,62035-62038,62043-62044,62052-62053 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62021 | benjamin.peterson | 2008-03-28 18:11:01 -0500 (Fri, 28 Mar 2008) | 2 lines
NIL => NULL
........
r62029 | amaury.forgeotdarc | 2008-03-28 20:42:31 -0500 (Fri, 28 Mar 2008) | 3 lines
Correctly call the base class tearDown();
otherwise running test_logging twice produce the errors we see on all buildbots
........
r62035 | raymond.hettinger | 2008-03-29 05:42:07 -0500 (Sat, 29 Mar 2008) | 1 line
Be explicit about what efficient means.
........
r62036 | georg.brandl | 2008-03-29 06:46:18 -0500 (Sat, 29 Mar 2008) | 2 lines
Fix capitalization.
........
r62037 | amaury.forgeotdarc | 2008-03-29 07:42:54 -0500 (Sat, 29 Mar 2008) | 5 lines
lib2to3 should install a logging handler only when run as a main program,
not when used as a library.
This may please the buildbots, which fail when test_lib2to3 is run before test_logging.
........
r62043 | benjamin.peterson | 2008-03-29 10:24:25 -0500 (Sat, 29 Mar 2008) | 3 lines
#2503 make singletons compared with "is" not == or !=
Thanks to Wummel for the patch
........
r62044 | gerhard.haering | 2008-03-29 14:11:52 -0500 (Sat, 29 Mar 2008) | 2 lines
Documented the lastrowid attribute.
........
r62052 | benjamin.peterson | 2008-03-30 14:35:10 -0500 (Sun, 30 Mar 2008) | 2 lines
Updated README regarding doc formats
........
r62053 | georg.brandl | 2008-03-30 14:41:39 -0500 (Sun, 30 Mar 2008) | 2 lines
The other download formats will be available for 2.6 too.
........
2008-03-30 22:51:45 -03:00
|
|
|
if xold is not None and yold is not None:
|
2004-07-18 03:16:08 -03:00
|
|
|
event.widget.create_line(xold,yold,event.x,event.y,smooth=TRUE)
|
|
|
|
# here's where you draw it. smooth. neat.
|
|
|
|
xold = event.x
|
|
|
|
yold = event.y
|
1998-01-26 12:47:30 -04:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2004-07-18 03:16:08 -03:00
|
|
|
main()
|