Martin v. Löwis | 97cf99f | 2008-06-10 04:44:07 +0000 | [diff] [blame] | 1 | |
| 2 | |
| 3 | ---------------------------------------------- |
| 4 | |
| 5 | turtleDemo - Help |
| 6 | |
| 7 | ---------------------------------------------- |
| 8 | |
| 9 | This document has two sections: |
| 10 | |
| 11 | (1) How to use the demo viewer |
| 12 | (2) How to add your own demos to the demo repository |
| 13 | |
| 14 | |
| 15 | (1) How to use the demo viewer. |
| 16 | |
| 17 | Select a demoscript from the example menu. |
| 18 | The (syntax coloured) source code appears in the left |
| 19 | source code window. IT CANNOT BE EDITED, but ONLY VIEWED! |
| 20 | |
| 21 | - Press START button to start the demo. |
| 22 | - Stop execution by pressing the STOP button. |
| 23 | - Clear screen by pressing the CLEAR button. |
| 24 | - Restart by pressing the START button again. |
| 25 | |
| 26 | SPECIAL demos are those which run EVENTDRIVEN. |
| 27 | (For example clock.py - or oldTurtleDemo.py which |
| 28 | in the end expects a mouse click.): |
| 29 | |
| 30 | Press START button to start the demo. |
| 31 | |
| 32 | - Until the EVENTLOOP is entered everything works |
| 33 | as in an ordinary demo script. |
| 34 | |
| 35 | - When the EVENTLOOP is entered, you control the |
| 36 | application by using the mouse and/or keys (or it's |
| 37 | controlled by some timer events) |
| 38 | To stop it you can and must press the STOP button. |
| 39 | |
| 40 | While the EVENTLOOP is running, the examples menu is disabled. |
| 41 | |
| 42 | - Only after having pressed the STOP button, you may |
| 43 | restart it or choose another example script. |
| 44 | |
| 45 | * * * * * * * * |
| 46 | In some rare situations there may occur interferences/conflicts |
| 47 | between events concerning the demo script and those concerning the |
| 48 | demo-viewer. (They run in the same process.) Strange behaviour may be |
| 49 | the consequence and in the worst case you must close and restart the |
| 50 | viewer. |
| 51 | * * * * * * * * |
| 52 | |
| 53 | |
| 54 | (2) How to add your own demos to the demo repository |
| 55 | |
Terry Jan Reedy | c5a72e6 | 2014-06-24 22:21:41 -0400 | [diff] [blame] | 56 | - Place the file in the same directory as turtledemo/__main__.py |
Terry Jan Reedy | f5ac57d | 2014-06-30 16:09:24 -0400 | [diff] [blame] | 57 | IMPORTANT! When imported, the demo should not modify the system |
| 58 | by calling functions in other modules, such as sys, tkinter, or |
| 59 | turtle. Global variables should be initialized in main(). |
Martin v. Löwis | 97cf99f | 2008-06-10 04:44:07 +0000 | [diff] [blame] | 60 | |
Terry Jan Reedy | c5a72e6 | 2014-06-24 22:21:41 -0400 | [diff] [blame] | 61 | - The code must contain a main() function which will |
| 62 | be executed by the viewer (see provided example scripts). |
| 63 | It may return a string which will be displayed in the Label below |
| 64 | the source code window (when execution has finished.) |
Martin v. Löwis | 97cf99f | 2008-06-10 04:44:07 +0000 | [diff] [blame] | 65 | |
Terry Jan Reedy | c5a72e6 | 2014-06-24 22:21:41 -0400 | [diff] [blame] | 66 | - In order to run mydemo.py by itself, such as during development, |
| 67 | add the following at the end of the file: |
Martin v. Löwis | 97cf99f | 2008-06-10 04:44:07 +0000 | [diff] [blame] | 68 | |
Terry Jan Reedy | c5a72e6 | 2014-06-24 22:21:41 -0400 | [diff] [blame] | 69 | if __name__ == '__main__': |
| 70 | main() |
Terry Jan Reedy | f5ac57d | 2014-06-30 16:09:24 -0400 | [diff] [blame] | 71 | mainloop() # keep window open |
Terry Jan Reedy | f51531e | 2014-06-22 01:18:54 -0400 | [diff] [blame] | 72 | |
Terry Jan Reedy | c5a72e6 | 2014-06-24 22:21:41 -0400 | [diff] [blame] | 73 | python -m turtledemo.mydemo # will then run it |
| 74 | |
| 75 | - If the demo is EVENT DRIVEN, main must return the string |
| 76 | "EVENTLOOP". This informs the demo viewer that the script is |
| 77 | still running and must be stopped by the user! |
| 78 | |
| 79 | If an "EVENTLOOP" demo runs by itself, as with clock, which uses |
| 80 | ontimer, or minimal_hanoi, which loops by recursion, then the |
| 81 | code should catch the turtle.Terminator exception that will be |
| 82 | raised when the user presses the STOP button. (Paint is not such |
| 83 | a demo; it only acts in response to mouse clicks and movements.) |