Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Write once, run everywhere

Write once, run everywhere

Доклад Игоря Новикова на kharkivpy #8

Dd577613da0f8941fba3932e713f6789?s=128

Yehor Nazarkin

August 12, 2013
Tweet

Transcript

  1. - почем опиум для народа? (с) Остап Бендер Write once

    run anywhere
  2. Основные десктопные системы MacOS X Windows Linux

  3. Виджетсеты платформ Carbon/Cocoa WinAPI Gtk+/Qt

  4. Биндинги к Python PyObjC pywin32 PyGtk

  5. Механизм работы биндингов Platform API Python native extension Python API

    Native side Python side
  6. Три независимых проекта, использующих платформенно-специфические биндинги: ! • на Windows

    - pywin32 • на MacOS X - PyObjC • на Linux - PyGtk Самый надежный путь, но при этом самый затратный
  7. Казалось бы, что может быть проще? Правильно выбранный тулкит и

    мультиплатформенное приложение готово!
  8. • Tkinter • PyQt • PyGtk • wxpython МУЛЬТИПЛАТФОРМЕННЫЕ ТУЛКИТЫ

  9. Tkinter - стандартный тулкит для Python биндинг к Tcl/Tk

  10. None
  11. Внутренняя структура Tkinter Tkinter Native extension _tkinter TCL Tk Basic

    platform API
  12. Tkinter

  13. PyQt

  14. PyQt SWIG interfaces Native SWIG interfaces Qt library Basic platform

    API Внутренняя структура PyQt
  15. Tkinter PyQt

  16. PyGtk

  17. Native python extension Gtk library Basic platform API Внутренняя структура

    PyGtk
  18. None
  19. Tkinter PyQt PyGtk

  20. wxWidgets

  21. wxpython SWIG interfaces Native SWIG interfaces wxWidgets Platform controls Внутренняя

    структура wxPython
  22. Tkinter PyQt PyGtk wxpython

  23. "Что делать?" (с) и кто виноват :)

  24. Abstract API PyObjC pywin32 PyGtk Возможный вариант создания полноценного мультиплатформенного

    тулкита
  25. None
  26. Спасибо за внимание! И какие есть вопросы?