2009-12-16 62 views
1

是否有一种简单的方法来获得对py2app追踪对话框的更多控制,或者只是一种显示GUI消息的好方法?使用py2app时,有没有办法自定义显示的追溯对话框? (或者显示一个不同的可可对话框?)

如果我养我的py2app脚本例外,我得到一个对话框,说是这样的:

MyAppName Error

MyAppName Error

An unexpected error has occurred during execution of the main script

MyRaisedError: This is the text that I can control when I raise the error.

打开控制台终止按钮。我的脚本需要检查某个DVD是否在驱动器中,如果不是,我想显示一个错误对话框并退出。我想对此有更多的控制,因为我只能更改一些文本并且无法控制按钮。

我试着调用osascript通过applescript做'显示对话框',但它给了我一个这样的错误:0:19:执行错误:不允许用户交互。 (-1713)我并不特别喜欢这种方式,但如果这是我所能做的...

我真的不想包括像Cocoa Dialogs或类似PyObjC项目的大项目.. 。脚本本身非常小,我看不到为了获得对话而添加10倍的脚本肉。

回答

2

而不是使用osascript的,你可以通过它py-appscript,如果你不已经有它在你的Python站点库,可以通过easy_install安装呼叫display dialog。这个例子工作的py2app生成的应用内:

#!/usr/bin/env python 
from osax import * 
import py2app 

def doit(): 
    sa = OSAX() 
    sa.display_dialog("Python says hello!", 
      buttons=["Hi!", "Howdy!", "Duuuude!"], 
      default_button=3) 

if __name__ == '__main__': 
    doit() 
+0

什么是最好的方式将其包含在py2app包中?我不希望使用我的应用的人必须安装它。 – zekel 2009-12-16 22:13:37

+0

通过在脚本中导入它,py2app应该自动包含在你的应用程序包中。你不必做任何特别的事情。 – 2009-12-16 22:20:29

+0

为了澄清,py2app不一定会这样做,如果你使用默认的Apple提供的python。对于您要分发的独立应用程序,您可能想要在多个OS X级别上工作,您可能希望使用python.org python。 – 2009-12-16 22:39:15

0

只要把标准的Python try/catch块周围的代码抛出异常的部分,然后用NSAlert要告诉你的用户,他们需要把DVD在

+0

NSAlert从何而来? – zekel 2009-12-17 18:17:10