Python 入門指南 5.0

單元 30 - GUI 的基本概念與 MVC 模式

~~學習進度表~~

大部分物件導向程式語言在開發 GUI 的部份會採取 MVC 模式 (Model-View-Controller) , M 是我們的 Encrypt 類別 (class) , V 為介面,而 C 為 M 與 V 之間的控制器

EncryptView

M   V   C
↓      ↓
      Encrypt     EncryptController

依 MVC 模式,三個部分都是獨立開發的類別或檔案,在 Python 中就會放在不同的模組 (module) 中,這是說 M 是資料計算的核心類別,其為 Model 的頭字母縮寫, V 是介面類別, V 為 View 的頭字母縮寫, C 為控制 M 與 V 之間交流的類別, C 則是 Controller 的頭字母縮寫。

MVC 模式的目的是將軟體功能拆分成不同的部分,這樣的好處是將軟體分成不同單元,然後各自開發測試,最後再利用 MVC 的概念組合在一起。

我們在上一個單元已經介紹過設計 Tk 應用程式的步驟,以及套用三種版面管理員的 Tk 小程式,現在我們進一步來看 GUI 的基本架構,下面以 Tk 製作的軟體 Thonny 在 Windows 執行為例。

從上而下來看,第一個就是標題列

Tk 設定視窗標題是直接用 Tk 應用程式物件來設定,我們在上一個單元的三個 Tk 小程式已經示範過。

接下來是選單列

選單列的視窗元件為下拉式選單,主要用途是把整理軟體的所有功能,由於我們要製作的 GUI 軟體,所有的功能都已經放到七個按鈕中,因此沒有額外設計選單列。

下面則是工具列

Thonny 是用自訂的小圖片當按鈕,我們的 GUI 預計是用內建的按鈕,並套用內建的樣式,因此按下按鈕會出現內建的動畫效果,

然後下面是工作區

Thonny 的工作區是依據需要,由很多不同的視窗元件組成。

最底下向左對齊的是狀態列

狀態列是依需要來顯示文字訊息, Thonny 的狀態列顯示的是目前用的直譯器版本。

Thonny 是開放原始碼的軟體,因此可以到 Thonny 官網 https://thonny.org/ ,下載原始碼來查看這個利用 Tk 的開發例子。

至於我們預計做出如下圖的「編密碼小工具」

我們的「編密碼小工具」不會像 Thonny 那樣架構龐大,基本上是 Python 及 Tk 製作小工具的範例,下一個單元我們會介紹 Tk 有哪些視窗元件,以及選擇哪些視窗元件來製作 V 的部分。

中英文術語對照
MVC 模式Model-View-Controller
類別class
模組module
重點整理
1. MVC 為軟體工程把模型、介面及控制分開的發展模式, M 就是就是處理資料的類別, V 為使用者介面的類別, C 則是控制 M 與 V 交流的類別。
2. 一般 GUI 軟體從少而下會分成標題列、選單列、工具列、工作區,以及通常放在地底下的狀態列。
3. Thonny 是採用 Python Tk 製作的開放原始碼 GUI 軟體。
問題與討論
1. 什麼是 MVC 模式?為什麼開發軟體要採用 MVC 模式?
2. 什麼是開放原始碼軟體?
3. 圖形介面有什麼優點及缺點?
練習
1. Python 直譯器提供的 IDLE 也是用 Tk 開發的軟體,打開 IDLE ,看看 IDLE 有什麼優點及缺點。
2. Eric 是另一款開放原始碼的 Python 整合開發環境,查看 Eric 的官網,比較跟 Thonny 的優劣。
3. Pitivi 為用 Python 開發的開放原始碼影片剪輯軟體,查看 Pitivi 的官網,看看 Pitivi 有什麼優點及缺點。
4. Pygame 為用 Python 開發的開放原始碼 2D 遊戲引擎,查看 Pygame 的官網,看看 Pygame 要如何上手。
5. Kivy 為用 Python 開發的開放原始碼使用者圖形介面,查看 Kivy 的官網,看看 Kivy 要如何上手。
6. PyChess 為用 Python 開發的開放原始碼西洋棋客戶端,查看 PyChess的官網,看看 PyChess 有什麼特點。
7. Django 為用 Python 開發的開放原始碼架站框架,查看 Django 的官網,看看 Django 要如何上手。
8. Flask 為用 Python 開發的開放原始碼架站框架,查看 Flask 的官網,看看 Flask 要如何上手。
9. Numpy 為用 Python 開發的開放原始碼科學計算程式庫,查看 Numpy 的官網,看看 Numpy 要如何上手。
10. BeautifulSoup 為用 Python 開發的開放原始碼解析標記語言文件程式庫,查看 BeautifulSoup 的官網,看看 BeautifulSoup 要如何上手。

上一頁 GUI 篇
回 Python 入門指南 5.0 首頁
下一頁 單元 31 - Tk 的視窗元件與 V 的部分
回 Python 教材首頁
回程式語言教材首頁