вторник, 10 июня 2014 г.

Слайд-шоу средствами языка программирования Python

Вот, решил выложить давний проект по реализации простенького слайд-шоу. Идея сего приложения достаточно проста, оно должно брать картинки (причем разных форматов) из текушей папки и поочередно показывать их на экране. Когда-то планировалось, что оно сможет еще играть музыку и менять картинки с разными эффектами, но природная лень стала грудью на пути реализации этого функционала.


В качестве языка программирования выбран был Python. Обычно в этом месте знающие люди сразу начинают ругаться, бурно высказываться на предмет нужности сего языка и т.п. Поэтому можно оставить их заниматься столь интересным делом и продолжить писать про наш "супер-мега-проект" :-).
При реализации было решено попробовать использовать только стандартные возможности стандартной установки Python на компьютер. Поэтому в качестве основы графического интерфейса получился Tkinter, который успешно работает под разными операционками. Но в процессе реализации появилось одно "НО",  которое вылилось в то, что по неизвестным причинам картинка загружалась в Label и упорно не хотела меняться на следующую. Даже не помогал всемогучий "update".
В результате плюнул на это дело и решил все таки отойти от первоначального желания использовать стандартные возможности Python. Благо вспомнилось про великий и могучий pygame, который может не только показывать картинки, но и играть музыку, и даже процесс создания эффектов может упроститься. В итоге получилось приложение на Tkinter, в окно которого внедрено surface из pygame.
Приложение состоит фактически из одного класса App, который включает в себя следующие методы:
  • __init__ - конструктор, в котором создаются основные переменные и запускается процесс создания интерфейса и собственно показ слайд-шоу.
  • GetListOfImages  - получение списка изображений из текущего каталога.
  • btnBackClick - листание назад.
  • btnForwardClick - листание вперед.
  • btnQuitClick - завершение работы приложения.
  • chkBox1Click - включение/выключение режима автоматического показа.
  • makeGUI - формирование интерфейса пользователя.
  • mainloop  - основной цикл pygame, в котором и происходит смена картинок.
Весь код можно посмотреть тут

Комментариев нет: