Вывод в родительское окно

Добрый день.

Сходу:

#!/usr/bin/env python
# --*-- coding:utf-8 --*--
  
import pygtk
pygtk.require('2.0')
import gtk
from subprocess import call
import platform
  
class Table:
    # Наш callback.
    # Данные передаваемые этому методу выводятся в stdout
    def callback(self, widget, data=None):
        print "Привет снова - %s была нажата" % data
  
    # Этот callback завершает программу
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False

    def _list(self, widget, data=None):
        call(["ls", "-la"])

    def _get_os(self, widget, data=None):
#        platform.system()
        if platform.dist()[0] == "Ubuntu":
            print "Ubuntu"
#            subprocess.call(["sudo", "apt-get", "update"])
        else:
            print "Other"
  
    def __init__(self):
        # Создаём новое окно
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  
        # Устанавливаем заголовок окна
        self.window.set_title("Что то простое v.:0.1")
  
        # Устанавливаем обработчик для delete_event, который немедленно
        # Завершает работу GTK.
        self.window.connect("delete_event", self.delete_event)
  
        # Устанавливаем границу для окна
        self.window.set_border_width(20)
  
        # Создаём таблицу 2х2
        table = gtk.Table(3, 2, True)
  
        # Размещаем таблицу в главном окне
        self.window.add(table)
  
        # Создаём первую кнопку
        button = gtk.Button("кнопка 1")
  
        # По нажатии кнопки мы вызываем метод "callback"
        # с указателем на "кнопка 1" в виде аргумента
        button.connect("clicked", self.callback, "кнопка 1")
  
  
        # Вставляем кнопку 1 в верхнюю левую ячейку таблицы
        table.attach(button, 0, 1, 0, 1)
  
        button.show()
  
        # Создаём вторую кнопку
  
        button2 = gtk.Button("кнопка 2")
  
        # По нажатию кнопки мы вызываем метод "callback"
        # с указателем на "кнопка 2" как аргумент
        button2.connect("clicked", self.callback, "кнопка 2")
        # Вставляем кнопку 2 в верхнюю правую ячейку таблицы.
        table.attach(button2, 1, 2, 0, 1)
  
        button2.show()
  
        # Создаём кнопку "Выход"
        button3 = gtk.Button("Выход")
  
        # Когда кнопка нажата, мы вызываем функцию main_quit
        # и программа завершает свою работу
        button3.connect("clicked", lambda w: gtk.main_quit())
  
        # Вставляем кнопку выхода в 2 нижние ячейки.
        table.attach(button3, 0, 2, 1, 2)
  
        button3.show()
 
        button4 = gtk.Button("Листинг директории")
        button4.connect("clicked", self._list, "Листинг")
        table.attach(button4, 0, 2, 2, 3)
        button4.show()

        button5 = gtk.Button("Версия ОС")
        button5.connect("clicked", self._get_os, "Листинг")
        table.attach(button5, 0, 2, 3, 4)
        button5.show()
 
        table.show()
        self.window.show()
  
def main():
    gtk.main()
    return 0      
  
if __name__ == "__main__":
    Table()
    main()


Есть вот такой не очень идеальный код, написан для примера, и для того чтобы воплотить в жизнь. Но к сожалению не нашел в учебниках, каким образом, когда вызываешь скрипт не из консоли, а ярлыком запуска допустим «юзером-с-рабочего-стола». И конечно как видно по коду, существуют вызовы внешних процессов допустим «ls -la», каким образом выхлоп вывести в окно, чтобы юзер увидел это?

Спасибо.
  • Вопрос задан
  • 3138 просмотров
Пригласить эксперта
Ответы на вопрос 1
JustAMan
@JustAMan
import subprocess

proc = subprocess.Popen(['ls','-la', some-other-args], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
out, err = proc.communicate()

сделает то же, что и subprocess.call(), только в out и err окажется вывод процесса в stdout и stderr соответственно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы