Скрыть консоль для приложения Tkinter на OSX - PullRequest
3 голосов
/ 27 ноября 2009

Я пытаюсь скрыть терминал, когда запускаю приложение на основе графического интерфейса пользователя Tkinter, но когда я дважды щелкаю файл app.py в OSX, появляется окно терминала. Я попытался изменить расширение на .pyw и попытался запустить его с / usr / bin / pythonw, но, несмотря ни на что, окно терминала все равно появляется.

Я даже пытался добавить try /, кроме ниже, но когда я запускаю его, я получаю ошибку: 'недопустимое имя команды "console" "в открывшемся окне терминала.

from Tkinter import *

class MainWindow(Tk):
    def __init__(self):
        Tk.__init__(self)
        try:
            self.tk.call('console', 'hide')
        except TclError, err:
           print err

win = MainWindow()
win.mainloop()

Мне не удалось найти способ скрыть появление окна терминала. У кого-нибудь есть идеи?

Ответы [ 3 ]

7 голосов
/ 27 ноября 2009

Двойным щелчком по файлу .py в OS X вы, вероятно, запускаете экземпляр Python gui через Python Launcher.app, поставляемый с OS X Pythons. Вы можете убедиться в этом, выбрав файл .py в Finder и сделав для него Get Info. Python Launcher - это очень простое приложение, которое запускает Python с помощью команды Terminal.app. Чтобы напрямую запустить собственное приложение с Python GUI, предпочтительным подходом является создание простого приложения с использованием py2app . Здесь есть краткое руководство .

EDIT:

Конечно, есть и другие способы, но, скорее всего, любой из них будет добавлять больше уровней косвенности. Чтобы сделать обычное запускаемое приложение с двойным кликом, вам нужна какая-то структура приложения. Вот что py2app позволяет вам создавать напрямую.

Очень простой способ - воспользоваться возможностью редактора AppleScript для создания приложения запуска. В редакторе AppleScript:

  • /Applications/Utilities/AppleScript Editor.app в OS X 10,6

  • /Applications/AppleScript/Script Editor.app в 10,5

создайте новый скрипт, похожий на этот:

do shell script "/path/to/python /path/to/script.py &> /dev/null &"

, а затем Save As.. с File Format -> Application. Тогда у вас будет приложение с двойным кликом, которое запустит другое приложение. Вы можете создать что-то похожее с Apple Automater.app. Но под одеялом они делают нечто похожее на то, что делает для вас py2app, просто с несколькими слоями сверху.

1 голос
/ 26 апреля 2016

Добавив к ответу Неда Дейли, в моем случае, когда я пытался запустить приложение Python с помощью приложения AppleScript, оно изначально не работало. Я обнаружил, что это связано с некоторой ошибкой кодирования (я использую UTF-8, и в прошлом я чувствовал необходимость настроить его на UTF-8).

Итак, после дальнейшего изучения я обнаружил, что могу добиться этого, создав приложение AppleScript со следующим кодом (корректируя пути python3 и приложения Python по мере необходимости):

do shell script "export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8; /usr/local/bin/python3 '/Users/USER/FOLDER/SCRIPT.py' &> /dev/null &"

Запускает приложение Python без окон терминала. Затем приложение AppleScript можно персонализировать с помощью обычного значка и поместить в док-станцию. При нажатии он запускает интерпретатор Python, который все еще отображается в Dock, но без видимых окон.

Я думаю, что это может быть полезно для других пользователей.

0 голосов
/ 01 октября 2010

'console hide' не скрывает терминал в OS X. Он скрывает встроенную консоль Tk, которая действительно является пережитком времен MacOS Classic (и которая до сих пор широко используется в Windows).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...