Приложение с консолью и графическим режимом - PullRequest
2 голосов
/ 13 мая 2010

У меня есть консольное приложение Python. Как и большинство консольных приложений Python, он использует модуль OptionParser для получения аргументов. Сейчас я разработал графический интерфейс для моего приложения с использованием wxPython, и я хотел бы интегрировать их. Я бы хотел, чтобы мое приложение запускалось как с консоли, так и из пользовательского интерфейса ОС. Когда он вызывается из консоли, он запускается как консольное приложение, а при двойном щелчке в интерфейсе ОС - как приложение с графическим интерфейсом. Как я мог сделать что-то подобное? Может ли кто-нибудь показать мне фрагмент того, каким должен быть блок __main__?

Спасибо за тонну.

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

Вы можете передать аргументы в приложение, а затем использовать анализатор аргументов?

if __name__ == "__main__":
  from  optparse import OptionParser

  parser = OptionParser() 
  parser.add_option("-g","--gui_mode",
                    dest="guimode",
                    help="start program in gui mode",
                   action="store_true")

  (options,args) = parser.parse_args()

  if (options.guimode):
      print "start wx app"
  else:
      print "start cmd line app"

Edit: Извините, неправильно прочитал, я думал, что вы хотите начать с другого приложения Wx. а не из "OS UI" Я не знаю отличного кроссплатформенного способа сделать это. Проблема в том, что в Windows .py файлы обычно связаны с python.exe .pyw файлы похожи, но не имеют консольного окна.
Таким образом, вам на самом деле придется изменить ОС для поддержки этого поведения. Например, вы можете создать ярлык (в windows / gnome / kde), который запускает программу с параметром --gui_mode, или использовать механизм, подобный @Austin, предложенный в * nix ОС. Некоторые из этих вещей могут быть автоматизированы с помощью disttools, если вы устанавливаете приложение

0 голосов
/ 13 мая 2010

Попробуйте:

import os
print os.environ

и выводит os.environ ['TERM'] в окно tkinter при выполнении сценария двойным щелчком по нему.

Для меня это 'xterm-color'.

Какую операционную систему вы используете? Как вы гарантируете, что двойной щелчок по файлу .py приведет к его выполнению?

...