2016-03-07 2 views
0

Я создал графический интерфейс, который запускает команду в терминале Linux.Пропуск Терминал вывода в GUI

Пример => -n 20 -id 15 -области квадрат (10,20) -dim 2 -o исполнение -format гео, Тесс

Эта команда предназначена для выполнения кода для пакет. И когда он выполняет серию выходов, проходит в терминале Linux. Результат либо успешный, либо генерируется вывод, либо возникает ошибка из-за ошибки дампа или плохого аргумента.

Примеры терминальных выходов:

Ошибка: matheval не удалось обработать выражение. Синтаксис выражения , вероятно, неверен. Это может также быть вызвано некачественной установкой Matheval (выражение = 1 -ori fiber (,,)). Отменено (ядро сбрасывали)

Другая ошибка

Ошибка: Плохие аргументы! Прерванный (ядро сбрасывали)

Что я пытаюсь сделать, это вернуть эту ошибку обратно в GUI или как MessageBox и/или обновить нижнюю Строка состояния графического интерфейса с ошибкой.

Я не знаком с модулями wx и subprocess, но до сих пор мои исследования не нашли решения.

Я запускаю Python 2.7 и используя Tkinter.

+0

Если ваша проблема с Tk, [это может помочь] (http://stackoverflow.com/questions/17280637/tkinter-messagebox-without-window). –

+0

Если ваша проблема связана с захватом 'stderr' вашей команды Linux Terminal, вам, вероятно, понадобится' subprocess.Popen() 'с' stderr = subprocess.PIPE'. Например, попробуйте: 'p = subprocess.Popen ('/ bin/cat /bad_path'.split(), stderr = subprocess.PIPE)', за которым следует 'sout, serr = p.communicate()'. –

+0

@BrianMcFarland благодарю вас за это. Я понимаю, что мне нужно передать команду, которую я использую в Popen > p = subprocess.Popen (['neper', '-T', '-format', output_form, '-n', n, '-id ', id,' -dim ', dim, reg], stdout = subprocess.PIPE) , потому что это создает ошибку в терминале, хотя синтаксис команды верен. –

ответ

0

Это, похоже, проделает эту работу.

 # Create a string and pass variables 
     neper_exec = "neper -T -n %s -id %s -format %s -o %s -dim %s -domain %s " % (n, id, output_form, o, dim, domain) 
     # Execute the subporcess using the variable 
     p = subprocess.Popen(neper_exec, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # when shell is dropped Linux gives and error 

Благодаря @BrianMcFarland для руководства по команде подпроцесса.

Смежные вопросы