[音樂] [音樂] [音樂] [音樂] [音樂] [音樂] 大家好,我是Ling-Chieh Kung,那我們今天呢, 繼續來教商管程式設計,好今天的lecture呢,我們要講Graphical User Interface 那基本上呢,也蠻令人興奮的,好,截至目前為止,我們寫的program大體上來說 跟使用者互動的方式都是呃 import啦,print啦之類的,哦黑底白字出文字界面,那雖然上一次呢我們有教大- 家怎麼畫圖,但是 它畢竟不是一個真正的桌面應用程式,哦它畢竟不是 真正的可以讓使用者透過圖形界面的方式來跟程式互動 所以呢我們今天講的東西就是我們如何做圖形化的使用者界面,哦包括啊 使用者可以用滑鼠啊,可以按button吶,可以這個做各式各樣的事情,讓你寫出來的程- 式更接近 你平常在windows或max上面會用到的視窗程式 好所以呢我們在第一個影片裡面,我們來先介紹一些基本的概念 那麼user interface,哦使用者界面,它基本上呢就是讓人們 來跟程式互動的一個界面,哦所以我們以前呢透過import 透過print現在我們想要透過graphical的user interface,那user-face,user interface 的design它當然是很重要的啦,哦包括啊我們要讓使用者覺得很自然很直觀 它用的呢才不會容易就是操作錯誤。 好如果你在設計一個這個網頁 的登入界面的時候你是讓使用者先打密碼再打賬號,那這個就不intuitive啦 第二個呢是fail-safe,比如說呢我們會讓使用者在 網頁上註冊咨詢的時候,比如說賬號打完了以後 如果你需要它打密碼,有一些網頁會請你打密碼打兩次,對吧,不然的話你要是打錯了的話後- 續是會很麻煩的。 那又或者呢,我們在很多網頁上我們需要輸入日期的時候呢,它會給你一個月曆讓你選 而不是給你一個文字方塊,哦讓你直接打字進去。 因為打字 進去的話可能會打錯,你可能會不小心打了民國年,那他要的是新元年 或者你打了一個2月30號對吧,所以呢網頁 必須要做檢查,要呢它用文字方塊打,你打完了以後它檢查 不然就是它乾脆直接給你個月曆讓你選,哦它希望呢可以做到防呆或者容錯的效果 那最後呢當然就是user interface必須要讓使用者 有好的使用者體驗,那這個講下去又是很大一門學問啦 從色彩啊、 配置啊、 流程啊等等的都需要注意 好所以呢我們點到為止,那麼呢我們截至目前為止就如剛剛所說的我們都是 用text-based的interface也就是用文字,哦你可能稱呼它為com- mand lines命令鏈模式 或者是你稱呼它為consoles、 哦或者稱呼它為terminal,主控臺啊、 終端機啊、 whatever 反正就是那個黑底白字的東西。 那麼我們今天呢就要來 試著建立我們的第一個graphical user interface的program啦 昂所以有一些時候呢我們把這件事情稱為前端開發 因為我們的重點是我們要讓前端,哦使用者在用的時候呢覺得好用 那它跟後端的邏輯、 後端的運算、 後端存取的呀、 base呀、 網絡連線啊什麼的 某方面來講是分開的。 好那這個再講下去就是軟體開發的事情了,所以 我們就先就此打住,我們就知道我們要做的事情呢,比較稱為front-end 大體上來說是給user端用的,就可以啦 好那我們來看一下,我們要開發一個user interface,graphical user interface,那我們通常就縮寫為GUI,有人叫"gui"這樣,好 開發一個GUI呢,重點當然就是,首先 它這個東西比較好用啊,哦大部分的時候呢,我們看到要打 字進去的東西,那用文字指令才能操作的系統 你就會覺得不怎麼直觀。 好那很久以前的電腦當然 基本上都是text-based的,那後來才陸陸續續的才有GUI 那個人電腦會普及呢,也是要感謝GUI啦,畢竟 對一般人來說,用圖形界面,當然是容易多了 再來,如果你用GUI的話,比較 容易做fail safe,就像剛剛講的,你讓使用者直接輸入一串文字 那你就要做後續的檢查,其實也挺麻煩的,那你的user當然也很容易打錯 但是如果你今天給它calendar的話,那你基本上就,你完全可以從calenda- r控制它 取、 選的東西是不是合理的,又好比你讓使用者輸入Y或者N 跟給它一個Checkbox這個也有差,Checkbox就是 你在網頁上有時候會看到一個框框,請你打鉤 那就是Checkbox,哦。 Checkbox只有打鉤或打叉或者是不打的可能性了 你要使用者輸入Y/N他可以輸入各式各樣奇怪的東西啊,輸入小數點吶、 輸入整數啊、 誰知道 同樣的道理,如果你需要他輸入1,2,3,4,5的其中一個數字,你還不如給他一個- 下拉選單 下拉選單就是網頁上有時候你會看到一個這樣子哦,然後你按下去了以後呢, 出現一個下拉選單,然後1,2,3,4,5選一個,這樣子哦 我相信大家應該多少都用過。 那這個情況下呢因為你是給他選 自然他也沒有亂打的可能性啦。 好所以圖形界面它至少有這兩大好處,對吧,好用 使用者會喜歡,而且比較容易容錯 那當然它也有缺點。 它的缺點一般來說呢就是 如果你直接跟text-based的user interface[未知] 它的performance,哦系統運算的效能,是比較耗資源的 那自然呢,普遍來說performance也比較差。 哦所以你可以想象,如果今天有一台[未知] 好接受各式各樣的這個需求,那基本上它就不叫不會有user,graphical user interface 我們的終端界面上會做graphical user interface,但是在大型主機上可能就不會 好不過anyway,這個大概也不是大家煩惱的啦,你就直觀地理解 你的電腦,要能夠跑出文字界面它不耗什麼資源 但是要能夠跑出圖形界面的話,它就需要多花一些運算資源,大概就是這個樣子 好那我們今天的任務是要來學習怎麼開發graphical user interface 嘛,那我們當然呢就是一樣,昂用python當做我們的語言 用python來做GUI有一個好處,就是它比起用 這個傳統的系統語言C呀,C++,Java的容易 所以容易的意思就是你寫的code,你寫的程式碼的行數不用太多 就可以做出蠻不錯的GUI啊,那這當然也是因為python 是比較晚進才發展起來的語言,自然就會有這種好處 那呃C,C++也可以寫GUI 大家有興趣的話當然照樣可以試試看,哦不算是很方便 當然是做得到。 那Java呢也可以,哦在我唸書的那個時代 Java寫這個GUI是比C,C++方便一些 哦不過也蠻辛苦的,用python在這門課里,哦讓 我們用python這個語言可以快速地建構GUI,我覺得還挺合適的 那不過呢,它還是比做web來的麻煩一點 好今天這個年頭啊,我們其實大部分的時候我們如果真的要開發一個GUI 恐怕不是拿python來寫視窗程式 哦就是不會做我們今天在做的這些事情,我們恐怕會直接寫一個網站 或者是直接寫一個app,好那以網站來說呢,現在一般人 會寫html,哦會寫[未知],會寫php各式各樣的語言 那麼呢這些東西要寫出圖形界面,哦事實上是比用python更容易 那這個你也可以理解,因為網頁這種東西是通過瀏覽器去開的 瀏覽器看到了一些程式碼,然後它會自動把它轉成圖形界面 所以寫網頁本質上就是圖形界面 你很難用網頁程式開發去做什麼文字界面這種事情 好所以你真的要開發商用的程式,真的要做圖形界面的話,寫web 可能是最快的,好你那當然我們今天還是要來學這個GUI 好一定程度上呢,是因為這個比較fundamental,這樣子,好 那麼我們今天學GUI啊,就是我什麼時候會想要打造GUI呢,基本上就是你在做這個de- sktop software 也就是桌上型的程式,或者是你在寫app的時候,你才會這麼做 好如果你今天單純地只是想implement一個algorithm的話呢,你其實不會- 寫GUI 你就會直接寫這個文字界面就好了 好那或者是你想要寫一個application給自己用的話 很多時候寫網頁比寫GUI要快 好那大家有機會的話,以後可能可以想要去學一些這個網頁設計 相關的這個課程,或者是自己學,也都不錯 好網頁程式設計跟這個我們這門課教的程式設計有點不同 但是它當然相通的地方還是很多 好所以大家如果這門課已經完整地學完了的話,再去學網頁程式設計 就會比起你之前從來沒有學過程式設計的時候,要快得多啦 好這個呢也是鼓勵大家可以做這件事情 好所以呢我們今天學習這個,用python寫GUI 大體上來說的目標,有以下幾個:第一個就是得到GUI的一些foundmental ideas 有了這些foundmental ideas,你以後不管是寫app 還是寫網頁,事實上幫助都很大 好你等一下很快就可以看到你寫GUI的時候,它在程式設計 的邏輯和思維上,就會和以前寫文字界面的UI有點不同 而那個有點不同的東西,在web,在smartphone在GUI都是成立的 好所以以前我們寫文字界面,現在我們寫GUI 或許以後你會想要寫web,你會想要寫app,好那 它們當然web、 app、 和GUI按桌上型的這個程式設計 略有不同,但是呢,它們之間卻蠻多共通點 而且這個共通點呢是和text不一樣的。 好所以從text呢移動到GUI的話 再去移動到web,那就更容易一些啦。 另外呢,就是上禮拜教的classes 這禮拜我們來寫GUI的時候,我們很快就會發現classes是非常直觀的一種東西 就是我要寫桌上型的視窗的話,一定會用到,呃不應該說是用classes是再直觀不- 過的事情 所以今天也可以當做是上禮拜的一種延伸,就是哦原來寫classes可以干這個事情啊 這樣子。 那另外呢,就是希望大家更能夠有機會體驗到軟體開發以及上網搜尋 的這兩個任務,也就是說,呃,我們今天 寫程式不可能把所有的資訊都記載腦子裡 我們一定會需要上網查資料。 當你寫的程式越複雜的時候你越需要這麼做 好你很快,在今天的課程你就會發現哇有好多新的指令要記,不不用記 你只要有個印象,之後去查就可以啦 好那這個呢事實上也是大部分軟體開發的必經之路 以及最後hopefully上完今天的課程以後 如果你寫程式要給你的爸媽看,要給你的朋友看的話呢,你可以給他們看好看,fancy,- 有趣的東西 而不是只有黑白文字界面。 這大概就是我們今天的目標