В этой заметке мы напишем простейшее приложение с использованием библиотеки PyGTK и разберем, как оно работает.
Прежде всего нужно поставить соответствующий пакет. Обычно он называется python-gtk.
Заметка требует некоторых познаний в построении графического интерфейса.
работает?
то есть я понимаю что оконный менеджер генерит событие/сигнал при нажатии на кнопку закрытия окна, вы связываете это событие с методом и все такое.
В методе delete_event вы ничего не делаете кроме print, почему тогда происходит gtk.main_quit()?
зы: первый раз вижу такое, простите за невежество :)
почитал тут, оказывается, насколько я понял, оконный менеджер, как и предполагалось, генерит сигнал delete_event, который вызывает функцию delete_event() и в случае когда функция возвращает False генерится сигнал destroy ну и дальше все понятно. Вот только в данном случае мне кажется, это лишнее, потому как если убрать из кода все что связано с delete_event то приложение продолжит работать так как нам нужно.
Я просто хотел показать, как пишутся обработчики событий и сигналов, и что они выглядят немного по-разному.
Конечно, здесь со второго обработчика пользы никакой, но для ознакомления пусть будет.
connect_simple я не нашел, но не особо и искал. Надо глянуть в доки.
Убить сразу можно, но мало ли чего еще захочется сделать при получении сигнала? Закрыть соединения, например, или еще чего-то в этом духе.
Поэтому я для всех обработчиков делаю отдельные методы, на случай если потребуется туда что-то еще дописать.
def close(widget): gtk.main_quit()#или exit() - выход
button = gtk.Button("Hello!")#создаем кнопку с надписью "Hello!", запихиваем ее в переменную button button.connect("clicked", close)#выполнение close при нажатии на кнопку
window = gtk.Window()#создаем окно, запихиваем его в переменную window window.connect("destroy", close)#выполнение close при нажатии на кнопку закрыть на коробке окна window.add(button)#добавить кнопку button на форму
button.show()#грузим кнопку window.show()#грузим форму
А какие тут варианты? Я убрал лишние строки и все (нет, я не писал все заново). Так проще, легче, читабельнее. Вот блин, будущих быдлокодеров что-ли учим?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
то есть я понимаю что оконный менеджер генерит событие/сигнал при нажатии на кнопку закрытия окна, вы связываете это событие с методом и все такое.
В методе delete_event вы ничего не делаете кроме print, почему тогда происходит gtk.main_quit()?
зы: первый раз вижу такое, простите за невежество :)
Конечно, здесь со второго обработчика пользы никакой, но для ознакомления пусть будет.
А в PyGTK разве нет connect_simple? Я что-то не нашёл.
Убить сразу можно, но мало ли чего еще захочется сделать при получении сигнала? Закрыть соединения, например, или еще чего-то в этом духе.
Поэтому я для всех обработчиков делаю отдельные методы, на случай если потребуется туда что-то еще дописать.
Зачем self?
Зачем ЦЕЛУЮ ФУНКЦИЮ ради gtk.main()?
Зачем __init__?