Added 1-page introductions to creating GUIs in Python and the OSA
interface.
This commit is contained in:
parent
007fadd59d
commit
71ad9fb74f
|
@ -0,0 +1,55 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||||
|
<title>Creating a User Interface with MacPython</title>
|
||||||
|
<meta name="generator" content="BBEdit 6.5.3">
|
||||||
|
<link rel="SHORTCUT ICON" href="pythonsmall.gif">
|
||||||
|
<META NAME="AppleIcon" CONTENT="pythonsmall.gif">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Creating a User Interface with MacPython</h1>
|
||||||
|
|
||||||
|
<p>There are a number of packages that allow creation of a user interface
|
||||||
|
for your Python code, each of which has its own merits:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li> The Carbon package gives low-level access to the old Macintosh toolbox
|
||||||
|
calls for windows, events, dialogs and more. The <tt>FrameWork</tt> module
|
||||||
|
wraps these in a minimal framework. For documentation see the Macintosh
|
||||||
|
Library section of the <a href="doc/index.html">Python Language and runtime
|
||||||
|
documentation</a> and the Human Interface Toolbox section of
|
||||||
|
<a href="help:openbook=Carbon">Apple's Carbon Documentation</a>.
|
||||||
|
This solution is compatible with MacPython-OS9.
|
||||||
|
|
||||||
|
<li> The <tt>W</tt> framework is built on top of this, and easier to use.
|
||||||
|
The MacPython IDE uses W. Some documentation is available on
|
||||||
|
<a href="http://www.nevada.edu/~cwebster/Python/index.html">Corran Webster's website</a>.
|
||||||
|
Compatible with MacPython-OS9.
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>For new work, however, one of the following packages may be better suited.
|
||||||
|
They may be available out of the box in this distribution, otherwise you
|
||||||
|
can install them through the <a href="packman.html">Package Manager</a>:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li> <a href="http://pyobjc.sourceforge.net/">PyObjC</a> allows complete access to Cocoa.
|
||||||
|
In technical terms it is a
|
||||||
|
bidirectional bridge between Python and Objectve-C, similar to Apple's Java
|
||||||
|
bridge. Probably the best choice for Mac OS X-only applications, but at the
|
||||||
|
time of this writing PyObjC is still in beta.
|
||||||
|
|
||||||
|
<li> <a href="http://wxpython.sourceforge.net/">wxPython</a> gives Python programs
|
||||||
|
access to the wxWindows GUI toolkit. Many people consider this
|
||||||
|
the best open source cross-platform GUI solution available today.
|
||||||
|
|
||||||
|
<li> Tkinter is the oldest cross-platform GUI toolkit for Python, bridging Python
|
||||||
|
to Tcl/Tk. If you install AquaTk it creates a native user interface on Mac OS X.
|
||||||
|
Documented in the Library section, Tkinter subsection of the
|
||||||
|
<a href="doc/index.html">Python Language and runtime documentation</a>. Tkinter
|
||||||
|
is not available for MacPython-OS9.
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -30,6 +30,8 @@
|
||||||
<li><a href="finder.html">Running Python scripts from the Finder</a>
|
<li><a href="finder.html">Running Python scripts from the Finder</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="shell.html">Running Python scripts from the Unix Shell</a>
|
<li><a href="shell.html">Running Python scripts from the Unix Shell</a>
|
||||||
|
<li><a href="gui.html">Creating a User Interface with MacPython</a>
|
||||||
|
<li><a href="scripting.html">Controlling other Applications from MacPython</a>
|
||||||
<li><a href="packman.html">Installing additional functionality with the
|
<li><a href="packman.html">Installing additional functionality with the
|
||||||
Package Manager</a>
|
Package Manager</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||||
|
<title>Controlling other Applications from MacPython</title>
|
||||||
|
<meta name="generator" content="BBEdit 6.5.3">
|
||||||
|
<link rel="SHORTCUT ICON" href="pythonsmall.gif">
|
||||||
|
<META NAME="AppleIcon" CONTENT="pythonsmall.gif">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Controlling other Applications from MacPython</h1>
|
||||||
|
|
||||||
|
<p>Python has a fairly complete implementation of the Open Scripting
|
||||||
|
Architecure (OSA, also commonly referred to as AppleScript), allowing
|
||||||
|
you to control scriptable applications from your Python program,
|
||||||
|
and with a fairly pythonic interface. The following pieces of
|
||||||
|
AppleScript and Python are rougly identical (XXXX Not true right now!):</p>
|
||||||
|
|
||||||
|
<blockquote><tt><pre>
|
||||||
|
tell application "Finder"
|
||||||
|
get name of window 1
|
||||||
|
end tell
|
||||||
|
</pre></tt></blockquote>
|
||||||
|
|
||||||
|
<blockquote><tt><pre>
|
||||||
|
import Finder
|
||||||
|
|
||||||
|
f = Finder.Finder()
|
||||||
|
print f.get(Finder.window(1).name)
|
||||||
|
</pre></tt></blockquote>
|
||||||
|
|
||||||
|
<p>To send AppleEvents to an application you must first create the Python
|
||||||
|
modules interfacing to the terminology of the application (what
|
||||||
|
<tt>Script Editor</tt> calls the "Dictionary"). Use the IDE menu command
|
||||||
|
<tt>File->Generate OSA Suite...</tt> for this. For more control run</p>
|
||||||
|
|
||||||
|
<blockquote><tt>
|
||||||
|
pythonw .../Lib/plat-mac/gensuitemodule.py --help
|
||||||
|
</tt></blockquote>
|
||||||
|
|
||||||
|
<p>from a terminal window.</p>
|
||||||
|
|
||||||
|
<h2>Creating a scriptable application in Python</h2>
|
||||||
|
|
||||||
|
You can also create a scriptable application in Python, but this is not
|
||||||
|
very well documented. For Carbon
|
||||||
|
applications you should look at the <tt>MiniAEFrame</tt> module.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue