[Pythonmac-SIG] Fwd: MacPython applet problem

Ronald Oussoren ronaldoussoren at mac.com
Sat May 15 13:42:11 EDT 2004


This came up on c.l.py.


Begin forwarded message:

> From: bm007 at gmx.de (boris m)
> Date: 15 mei 2004 19:24:01 GMT+02:00
> To: python-list at python.org
> Subject: Re: MacPython applet problem
>
> After some tinkering with AppleScript, I found a workaround for my
> problem. I think it is worth sharing, so here we go...
>
> As Ronald pointed out, python applets currently do not support
> input/output functions like 'input' or 'print'. Of course, I could run
> the script from the command line, but then I would not have a nice
> drag and drop feature.
>
> I wanted to have both drag/drop (via sys.argv) *and* input/output
> functions. So I wrote an AppleScript droplet that allows me to do
> this. The droplet is currently limited to accept just one item, but it
> could easily be extended.
>
> This was one of my first explorations into AppleScript, so I am more
> than open to suggestions and improvements.
>
> Boris
>
> ---
>
> --> save as application
> on open dropItem
> 	set itemPath to POSIX path of dropItem
> 	set itemPathStr to (itemPath) as string
> 	set itemPathCLI to textReplace(itemPathStr, " ", "\\ ")
> 	
> 	tell application "Finder"
> 		set currentMacFolder to (container of (path to me)) as alias
> 		set currentFolder to POSIX path of currentMacFolder
> 		set folderPath to (currentFolder) as string
> 	end tell
> 	
> 	set folderPathCLI to textReplace(folderPath, " ", "\\ ")
> 	--> don't forget chmod +x myscript.py
> 	--> myscript.py is in the same directory as the droplet
> 	set scriptPath to folderPathCLI & "myscript.py" & " " & itemPathCLI
> 	
> 	activate application "Terminal"
> 	tell application "Terminal"
> 		do script scriptPath
> 	end tell
> end open
>
>
>
> on textReplace(theText, srchStrng, replStrng)
> 	tell (a reference to AppleScript's text item delimiters)
> 		set {od, contents} to {contents, {srchStrng}}
> 		try
> 			set {textList, contents} to {(text items of theText), {replStrng}}
> 			set {newText, contents} to {(textList as text), od}
> 			return item 1 of result
> 		on error errMsg number errNbr
> 			set contents to od
> 			error errMsg number errNbr
> 		end try
> 	end tell
> end textReplace
>
>
>
>
>>> My problem is that I the script needs some user input (I want to
> drag
>>> some
>>> text files to the applet and then specify some changes). For the
> user
>>> input
>>> I am using:
>>>
>>> inputStr  = raw_input("Enter a number: \n>>> ")
>>>
>>> This, however, seems to produce the error.
>>
>> That's right. I'm pretty sure applets on OSX do no (yet) support user
>> input/output using the input function and print statement.
>>
>> IIRC this is on the TODO list for the next release of MacPython.
>>
>> B.T.W. with MacPython the default action for .py file is to execute
>> them in a Terminal window, which gives you complete support for input
>> and print.
>>
>> Ronald
> -- 
> http://mail.python.org/mailman/listinfo/python-list
>
>
--
X|support bv            http://www.xsupport.nl/
T:  +31 610271479       F:  +31 204416173




More information about the Pythonmac-SIG mailing list