Python GUI не закрывает дочерний процесс - PullRequest
0 голосов
/ 01 марта 2011

Моя работа попросила меня перенести нашу программу (написанную кем-то еще) с Windows на Linux. Мне удалось успешно запустить скрипт Python и исполняемую программу, которые этот скрипт вызывает в Linux.

Скрипт Python создает GUI, и скрипт использует следующую команду, чтобы закрыть GUI, когда пользователь закончил:

window.connect("destroy", self.close_application)

Это часть скрипта def __init__(self):. GUI создается, он вызывает исполняемый файл как процесс следующим образом:

MY_EXE = 'My_Program'
EXE_ARGS = "-d -l"
sh = MY_EXE + ' ' + EXE_ARGS

self.proc = custom_popen.Popen('sh', std=custon_popen.PIPE, stdout=custom_popen.PIPE)

Проблема, с которой я столкнулся, заключается в том, что скрипт Python никогда не пытается закрыть My_Program, когда пользователь нажимает кнопку закрытия в графическом интерфейсе. Сценарий правильно закрывает графический интерфейс.

Итак, мой вопрос: как связать выбор пользователей для закрытия графического интерфейса пользователя с командой для закрытия процесса My_Program в скрипте Python?

Любая помощь приветствуется. Также, если это примечательно, скрипт требует pygtk 2.0.

Ответы [ 2 ]

0 голосов
/ 04 марта 2011

Мне удалось успешно убить приложение с помощью функции os.kill ().Итак, я считаю, что это решено для меня.

0 голосов
/ 01 марта 2011

Внешняя программа читает из стандартного ввода и затем завершает работу?Если это так, вызовет ли ваш close_application метод self.proc.stdout.close()?

Если внешняя программа не завершает работу автоматически (например, когда она завершает чтение ввода или выполняет простую задачу), тогда вам может понадобитьсяубить его явно с помощью Popen.close() (Python 2.6+) или os.kill().

...