close

什麼叫GUIGraphical User Interface-圖形方式顯示的電腦操作用戶介面

在日常生活中,我們在小7ibon機器上訂票、在ATM上提款、在手遊上的使用必殺技打boss、在亞馬遜網站上申請會員、在醫院系統上網路掛號,這些您看到的畫面(人與機器互動的介面),其實都是由程式撰寫出來的,為什麼叫這些介面為GUI,因為我們用圖樣介面設計做法,透過設計視窗、圖示與按鈕,讓使用者一看就了解如何使用的介面來取代枯燥艱澀的輸入問答及只是條列式的互動。我們設計的程式中有一大部分是扮演著與人與系統機制互動的介面角色。雖然設計這些畫面的難度不高,但可千萬別輕忽這種介面設計的重要性,在設計的領域中,有另一個專業的領域叫做UIUser Interface)、UXUser Experience),也是在設計領域上目前的顯學,所教的就是使用者動線及友善的使用介面的設計。成功的系統,往往不是其功能最完整,也不是包山包海最強大,常常是使用者使用最上手,最便利才能勝出。所以記得一件事,最艱澀的難事不見得最有價值,最符合人性而易用的設計通常會無往不利。

原生的Python GUI設計工具-Tkinter

Python 擅長的領域在於數據資料處理、資料科學計算、網路爬蟲籍資料探勘等科學方面,我們也可以利用Python完成很多自動化的工作。雖然設計使用者界面並不是它的強項。但為了滿足設計一條鞭的優勢,Python自己也有提供不錯的GUI設計內含功能Tkinter,也因為Python的使用者越來越多,讓很多GUI專為GUI設計的專業工具如PyQtwxPythonKivyPySide等願意提供整合應用於Python,但我個人覺得,Python這樣全包的程式工具,為了達成人機互動的良好目標,其內含的Tkinter就非常的powerful了,而且它有一個優勢,TkinterPython的內建模組,當Python存在,它就會存在,當然,有很多的使用介面是基於Web(網頁基礎)上設計的,雖然很親民,在網路上網頁無所不在,但常常基於網頁設計的互動介面,常會隨著瀏覽器的更新會出現相容性的問題,相對各有其利弊。

學習Python內含的GUI開發模組Tkinter對於已經有一定Python基礎的人而言是非常容易懂且易於學習,設計出來的程式碼在別人理解及閱讀上也很輕鬆,同時設計出來的GUI又能正常順利的在不同平台(Linux/Windows/Mac)上執行無誤,這些優點讓我不得不在Python的標準課程中介紹讓您認識,學會後拿來應用也讓您覺得自己很酷。有圖有真相,有產出有成就,我們就從如何運用Python內建的tkinter模組來設計友善的用戶使用介面來開始吧!

來說說tkinter!說它的來由很生硬,我們就跳過不談,我們來說說tkinter主要是做什麼的?

前面提到,在軟體設計上,有一個很重要的一環,就是若您設計一個友善的使用者介面,就讓用戶有好的感覺,事情可以說就成功了一半,也許有些硬底工程師不是這麼看,但我保守地說,最起碼讓事情或您的工程有一個好的開始吧。

那為什麼是tkinter呢?用Python內建的模組tkinter來設計UI有甚麼優勢呢?

  • 它很直覺,白話一點說,很容易就上手實作。
  • 它可以在不同的平台上執行,換句話說,設計出來的東西可以跨平台執行(Linux/Windows/Mac)。
  • 它仍在改良進步中,ttkinter就是tkinter的美化版,代表還在進步。
  • 它可以讓你的程式與GUI介面一體成形,在Python使用上很簡單的將tkinter匯入,也就是import  tkinter就可馬上開始使用,您可以用PythonGUI一路設計到程式邏輯,讓它一氣呵成,不須就由其他工具或多種程式語言來完成任務

在開始前,先概略性的描述一下tkinter就其可用的部件(widget),後面的章節在細部的說明一些常用的部件,我們大致上可將這些部件分為幾類,只要您善加利用,即便是每一類別您只要會一兩種,基本上大概就可以滿足所有的需求,當然,若您瞭解所有的部件(widget)的用途,設計起來的效果會更專業。

關於這些部件(widget)的分類及項目如下:

containers widgets(容器部件): frame toplevel paned window

buttons widgets(按鈕部件): button radiobutton checkbutton (checkbox) menubutton (combobox)

text widgets(文字部件): label labelframe message text

entry widgets(輸入部件): scale scroll listbox slider spinbox entry (singleline) text (multiline) and canvas (vector and pixel graphics)

另外tkinter又開發出來7種衍生出來的部件,讓我們在運用上更好利用因應不同的場景及用途:

tk_optionmenu, tk_dialog, tk_messagebox, tk_getopenfile, tk_getsavefile, tk_choosecolor, tk_choosedirector

後來美化的版本ttkinter

ttk 模組包含了 17 種元件, 其中的 11 種是 Tkinter 原本已經有的 :

Frame LabelLabelframeButtonRadiobuttonCheckbuttonMenubuttonEntryScaleScrollbarPanedwindow

另外 6 種是 ttk 推出的新元件 :

ComboboxNotebookProgressbarSeparatorSizegrip

Treeview

若您使用ttkinter後,可以比較出它較原本的tkinter更漂亮一些

運用Python內建的tkinter模組,快速設計GUI用戶介面(建立友善的使用者互動介面)

友善的互動介面很重要

大致上,我們在設計GUI介面的流程大致上如下面的sop

  • 首先建立一個使用者看的到的視窗物件(基底視窗也就是您放置部件的桌布)
  • 陸續在基底視窗中加入各項控制互動部件(部件本身也是個物件)
  • 依每個部件的功能,讓各個物件產生效果及驅動物件背後的工作

大致上學習的過程如下:

  • 了解並學習tkinter可用的部件的特定用途
  • 運用各部件物件函數及參數定義您可用的視覺或示意效果
  • 加入互動效果,也就是加入程式邏輯,讓他完成互動後被賦予的任務

之後,我會依部件的不同用途,提供幾個範例(運用常用的幾個widget),因不同的應用範例,來說明設計的過程及產生的效果

arrow
arrow
    創作者介紹
    創作者 阿丹 的頭像
    阿丹

    python愛玩客

    阿丹 發表在 痞客邦 留言(0) 人氣()