往 MVC GUI 設計邁進 - tkouter - 支援 html-based layout 的 tkinter 擴充函式庫

摘要

在過往的 GUI 程式設計中,製作 layout 往往是一件麻煩事。散落各處的元件及其擺放方式,難以讓設計師一目了然地想像和理解排版,我們只能透過實際運行 GUI 應用才能觀察到整體的佈局設計。其次,在代碼中,關於佈局的"視圖邏輯"、處理使用者輸入與渲染的"控制邏輯"與 GUI 應用主要的"計算邏輯",完全混雜在一起,既不利於開發,也不利於維護修改。其三,缺乏統一性的方式可以對相關 GUI 元件進行屬性上的修改。以上這些不足,在 Web 開發中,基於歷史發展的硬限制和逐步的改良加強,早就有了更方便的工具和解決方法: html、css和模板語言的使用能夠完全地切割視圖邏輯,能使設計單純化,也能使佈局一目了然,使用 MVC 設計架構的框架,能夠切割各種邏輯業務,使得設計更有彈性、更易維護。基於以上需求和 Web 解決方案的啟發,講者開發了一個 python 內建 GUI 函式庫 tkinter 的擴充函式庫 - tkouter,它支援使用者以 html 進行 layout 的設計。自此將視圖切割,並大幅度地簡化了設計的難度,更能以此為基礎,讓整體的設計趨近於 MVC 的原則。這個演講將會涵蓋 tkouter 設計的初衷、實作的方法與核心 API 的使用。並以一個實際的範例來說明 tkouter 的設計模式及各種優勢。

說明

### 使用的內建函式庫: - [html.parser] - Simple HTML and XHTML parser - [tkinter] - Python interface to Tcl/Tk (GUI 函式庫) - [inspect] - Inspect live objects ### 使用的第三方函式庫 - [jinja2] - Jinja2 is a modern and designer-friendly templating language for Python - [tkouter] - 本次的講題 ### 其他 - [ToyMVC] - 一種可能的 GUI MVC pattern - [tkpf] - 與 tkouter 類似精神的解決方案 [html.parser]: https://docs.python.org/3/library/html.parser.html [tkinter]: https://docs.python.org/3.6/library/tkinter.html [tkouter]: https://github.com/dokelung/tkouter [inspect]: https://docs.python.org/3/library/inspect.html [jinja2]: http://jinja.pocoo.org/docs/2.10/ [ToyMVC]: https://gist.github.com/skydark/2555842 [tkpf]: https://github.com/marczellm/tkpf

講者

袁克倫

我是袁克倫,你可以叫我 dokelung,我是一名小小軟體工程師,專長是電子設計自動化。 愛學習也愛分享,寫書來推廣熱愛的知識一直是我的夢想。本應與 C++ 共度一生,卻意外成為 Python 的終極狂熱者,幾乎生活上的大小事都想用 Python 解決(可惜吃飯和上廁所不行),酷愛有關於 Python 的一切。
http://dokelung.me/pages/about-me/ 有更多關於我的介紹。