[Python-checkins] cpython: Issue #22065: forward port the changes in c26862955342, update docstring with

terry.reedy python-checkins at python.org
Fri Aug 15 06:39:46 CEST 2014


http://hg.python.org/cpython/rev/4349bbc21ca7
changeset: 92102:4349bbc21ca7
user: Terry Jan Reedy <tjreedy at udel.edu>
date: Fri Aug 15 00:39:04 2014 -0400
summary:
 Issue #22065: forward port the changes in c26862955342, update docstring with
changes that were only merged into demohelp.txt, and re-delete demohelp.txt.
files:
 Lib/turtledemo/__main__.py | 64 ++++++++++++++-----------
 1 files changed, 36 insertions(+), 28 deletions(-)
diff --git a/Lib/turtledemo/__main__.py b/Lib/turtledemo/__main__.py
--- a/Lib/turtledemo/__main__.py
+++ b/Lib/turtledemo/__main__.py
@@ -2,9 +2,7 @@
 
 """
 ----------------------------------------------
-
- turtledemo - Help
-
+ turtleDemo - Help
 ----------------------------------------------
 
 This document has two sections:
@@ -54,18 +52,34 @@
 
 (2) How to add your own demos to the demo repository
 
- - place: same directory as turtledemo/__main__.py
+ - Place the file in the same directory as turtledemo/__main__.py
+ IMPORTANT! When imported, the demo should not modify the system
+ by calling functions in other modules, such as sys, tkinter, or
+ turtle. Global variables should be initialized in main().
 
- - requirements on source code:
- code must contain a main() function which will
- be executed by the viewer (see provided example scripts)
- main() may return a string which will be displayed
- in the Label below the source code window (when execution
- has finished.)
+ - The code must contain a main() function which will
+ be executed by the viewer (see provided example scripts).
+ It may return a string which will be displayed in the Label below
+ the source code window (when execution has finished.)
 
- !! For programs, which are EVENT DRIVEN, main must return
- !! the string "EVENTLOOP". This informs the viewer, that the
- !! script is still running and must be stopped by the user!
+ - In order to run mydemo.py by itself, such as during development,
+ add the following at the end of the file:
+
+ if __name__ == '__main__':
+ main()
+ mainloop() # keep window open
+
+ python -m turtledemo.mydemo # will then run it
+
+ - If the demo is EVENT DRIVEN, main must return the string
+ "EVENTLOOP". This informs the demo viewer that the script is
+ still running and must be stopped by the user!
+
+ If an "EVENTLOOP" demo runs by itself, as with clock, which uses
+ ontimer, or minimal_hanoi, which loops by recursion, then the
+ code should catch the turtle.Terminator exception that will be
+ raised when the user presses the STOP button. (Paint is not such
+ a demo; it only acts in response to mouse clicks and movements.)
 """
 import sys
 import os
@@ -96,14 +110,11 @@
 return [entry[:-3] for entry in os.listdir(demo_dir) if
 entry.endswith(".py") and entry[0] != '_']
 
-def showDemoHelp():
- view_text(demo.root, "Help on turtledemo", __doc__)
-
-def showAboutDemo():
- view_text(demo.root, "About turtledemo", about_turtledemo)
-
-def showAboutTurtle():
- view_text(demo.root, "About the turtle module.", turtle.__doc__)
+help_entries = ( # (help_label, help_doc)
+ ('Turtledemo help', __doc__),
+ ('About turtledemo', about_turtledemo),
+ ('About turtle module', turtle.__doc__),
+ )
 
 class DemoWindow(object):
 
@@ -245,12 +256,10 @@
 CmdBtn.pack(side=LEFT, padx='2m')
 CmdBtn.menu = Menu(CmdBtn)
 
- CmdBtn.menu.add_command(label='About turtle.py', font=menufont,
- command=showAboutTurtle)
- CmdBtn.menu.add_command(label='turtleDemo - Help', font=menufont,
- command=showDemoHelp)
- CmdBtn.menu.add_command(label='About turtleDemo', font=menufont,
- command=showAboutDemo)
+ for help_label, help_file in help_entries:
+ def show(help_label=help_label, help_file=help_file):
+ view_text(self.root, help_label, help_file)
+ CmdBtn.menu.add_command(label=help_label, font=menufont, command=show)
 
 CmdBtn['menu'] = CmdBtn.menu
 return CmdBtn
@@ -323,7 +332,6 @@
 
 
 def main():
- global demo
 demo = DemoWindow()
 demo.root.mainloop()
 
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /