2016-08-03 1 views
1

Я пытаюсь запустить программу/графический интерфейс из кода python.Использование os.system() в Python открывает программу, не может видеть окно запущенной программы

С терминала я могу запустить программу, просто набрав имя программы. Несколько строк выводятся на терминал, а затем открывается окно с графическим интерфейсом.

Я пытался эмулировать в питона, запустив

os.system("<program name>") 

Типичная мощность линии, как упоминалось выше, получить выводится на консоль, но ни одно окно не открывается с графическим интерфейсом.

Может ли os.system() использоваться для выполнения программ, имеющих собственное отдельное окно?

+0

Ознакомьтесь с модулем ['subprocess'] (https://docs.python.org/3/library/subprocess.html) для более гибкого создания процесса. – Kupiakos

+0

Я просто запустил 'os.system ('subl test.txt')' и открыл графический интерфейс, как обычно. Запуск Python 3.5.1 в Windows 10 для справки. Хотя я могу не понимать этот вопрос. – dashiell

ответ

1

От Python manual:

[os.system ] осуществляется путем вызова функции стандартного C system()

Это, как говорится, вы не должны иметь каких-либо проблем, запуская приложение с графическим интерфейсом с os.system. Я только что попробовал это, и все работает отлично.

Он также упоминает в руководстве, что:

Модуль subprocess обеспечивает более мощные средства для нереста новых процессов и получения их результатов; с использованием этого модуля предпочтительнее использовать эту функцию.

Возможно, стоит попробовать. Используются ли какие-либо другие приложения GUI, когда вы создаете их с помощью os.system?

+0

Похоже, что это может быть связано с более крупной (более страшной) проблемой, так как внезапно я не могу загрузить программу вообще (среди других важных проблем, таких как невозможность новых файлов или загрузка nautilus). Спасибо, хотя, я буду знать, что он должен работать сейчас! – hm8

0

Вот решение с помощью subprocess

import subprocess 

subprocess.Popen("notepad.exe") 

Или, если вы хотите запустить программу питона с конкретным переводчиком:

subprocess.Popen('{0} {1}'.format(PythonInterpreterPath,PythonFilePath.py))