Добрый день.
Сходу:
#!/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», каким образом выхлоп вывести в окно, чтобы юзер увидел это?
Спасибо.