11. Три независимых проекта, использующих
платформенно-специфические биндинги:
• на Windows - pywin32
• на MacOS X - PyObjC
• на Linux - PyGtk
Самый надежный путь,
но при этом самый затратный
12. Казалось бы, что может быть проще?
Правильно выбранный тулкит и
мультиплатформенное приложение готово!
19. Код на WAL
Код на wxpython
panel = wx.Panel()
vbox = wx.BoxSizer(wx.VERTICAL)
btn = wx.Button(panel, -1, "click Me")
vbox.Add(btn, 0, wx.ALIGN_CENTER)
btn.Bind(wx.EVT_BUTTON, self.OnClicked)
panel = wal.VPanel()
btn = wal.Button(panel, "click Me",
onclick=self.on_clicked)
panel.pack(btn)
20. Код класса wal.Button
class Button(wx.Button, WidgetMixin):
callback = None
def __init__(self, parent, text, size=DEF_SIZE,
onclick=None, tooltip='', default=False, pid=wx.ID_ANY):
wx.Button.__init__(self, parent, pid, text, size=size)
if default: self.SetDefault()
if onclick:
self.callback = onclick
self.Bind(wx.EVT_BUTTON, self.on_click, self)
if tooltip: self.SetToolTipString(tooltip)
def set_default(self):
self.SetDefault()
def on_click(self, event):
if self.callback: self.callback()
21. • Кроссплатформенность
• Кроссвиджетсетность и
кроссверсионность
• Код приложения не завязан на UI
• Сокращение объема кода
• Стиль кода по PEP-8
• Улучшение читабельности кода
Преимущества паттерна WAL