Вопрос

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

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

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()

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

Это было полезно?

Решение

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

Редактировать:

Конечно, есть и другие способы, но, скорее всего, любой из них добавит больше уровней косвенности.Чтобы создать обычное запускаемое приложение с "двойным кликом", вам нужна какая-то структура приложения.Вот что 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 подходит для вас, просто сверху больше слоев.

Другие советы

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

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

do shell script " export LC_ALL = en_US.UTF-8; экспорт LANG = en_US.UTF-8; / usr / local / bin / python3 '/Users/USER/FOLDER/SCRIPT.py' & amp; > / dev / null & "

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top