При использовании py2app есть ли способ настроить отображаемое диалоговое окно трассировки? (Или показать другой диалог Какао?) - PullRequest
1 голос
/ 17 декабря 2009

Есть ли простой способ получить больше контроля над диалогами трассировки py2app или просто хороший способ отображать сообщения GUI?

Если я вызываю исключение в моем скрипте py2app, я получаю диалог, который говорит что-то вроде этого:

Ошибка MyAppName

Ошибка MyAppName

Произошла непредвиденная ошибка во время выполнения основного скрипта

MyRaisedError: Это текст, которым я могу управлять при появлении ошибки.

Имеет Открытая консоль и Кнопки завершения . Мой сценарий должен проверить, есть ли определенный DVD в приводе, если нет, я хочу показать диалоговое окно с ошибкой и выйти. Я хотел бы иметь больше контроля над этим, так как я могу изменить только часть текста и не могу управлять кнопками.

Я попытался вызвать osascript для «отображения диалога» с помощью applecript, но он выдал ошибку, подобную этой: 0:19: ошибка выполнения: взаимодействие с пользователем не разрешено. (-1713) Мне не особенно нравится такой способ, но если это все, что я могу сделать ...

Я бы действительно предпочел не включать большой проект, такой как Диалоги Какао или что-то вроде проекта PyObjC ... Сам сценарий очень маленький, и я не вижу добавления 10-кратного содержания моего сценария просто чтобы получить диалог.

Ответы [ 2 ]

2 голосов
/ 17 декабря 2009

Вместо использования osascript вы можете вызвать display dialog через py-appscript , который, если у вас его еще нет в вашей библиотеке сайта python, можно установить через easy_install , Этот пример работает внутри приложения, созданного 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 голосов
/ 17 декабря 2009

Просто поместите стандартный блок Python try / catch вокруг раздела кода, который выдает исключение, затем используйте NSAlert, чтобы сообщить своим пользователям, что им нужно поместить DVD в

...