[PySimpleGUI介面學習](一)安裝及簡單說明
- 2020 年 3 月 12 日
- 筆記
# 一、介面編程到底是什麼? 關於程式設計,有太多的書來描述,那麼介面編程又是什麼東西呢? 當你學習完一本程式設計的書本時,一般情況下都學會了某個程式語言的一些基本流程,而在學習的過程中,無須牽扯到介面編程,無論是獲取用戶的字元輸入還是文件讀寫甚或是執行緒操作等等,都只需在命令窗口執行你寫的程式碼就好。然而,在電腦的發展史上,終於還是出現了介面,發展至今,從個人電腦到手機,從各種各樣的測試台到所有智慧設備,用戶操作介面無處不在,優秀的介面不但承載著人類方便的命令輸入,也從最初的展示收集部件發展到現在的動態、智慧、並具備收集人類各種有意識和潛意識狀態的工具,其細化程度之繁雜,令人嘆為觀止。 介面指的是用戶介面,此用戶是指那些非專業程式設計師的客戶。電腦的迅猛發展,可以解放人類的勞動力,各行各業都有各種需求,但是對於非專業程式設計師而言,面對命令窗口這種沉默的怪物,那種不友好是可想而知的,於是從人類自身出發,手、眼、語言等功能性的外延就成了介面設計的最初構想,在友好的介面上,即使對電腦再陌生的人,也會按照傻瓜式的指導一步步完成其想要完成的任務,而程式設計師要做的就是將用戶當成完全不懂電腦的人來製作介面,這種自以為是的程式設計師和不懂電腦的小白客戶之間於是就會產生各種各樣的不理解,這種互動性直接催生了介面的規範化操作。
# 二、PySimpleGUI是什麼? 然而從程式設計師的角度來看,**所有的介面只不過是一堆零部件的組合,其功能也只是收集數據而已!**基於這樣的觀點,PySimpleGUI這個Python的工具包就開發出來了,這個工具包的目的就是要將這種介面設計哲學實現出來,使得程式設計師從繁雜的重複性程式碼書寫中解脫出來,讓他們的精力不再花費於那些瑣碎的開發,更加專註於介面的搭配及功能實現,從這個角度來看,這不得不說是介面編程的一場革命。 目前比較主流的幾種介面工具包有wxWidget,Qt,Tcl/Tk等等,Python自帶Tck/Tk工具包,正如同上述,這些工具包的使用都要擺出一些架式,熟悉的程式設計師當然不覺得怎樣,但是對於新手而言,這些東西的每一步學習都是比較吃力的,於是一種符合人性化的哲學出來的時候,必然有許多天才程式設計師開始為這種哲學努力,即用統一的形式將這些主流工具包一一包裝,使得程式設計師在利用這種統一包裝語言進行編程的時候,無須考慮各種介面庫的不同名稱、不同方法以及不同語法,這種統一化的編程方式一經推出,即得到相當多程式設計師的關注,畢竟,對規律化東西的追求根植於我們人類的天性之中。 需要強調的是:**PySimpleGUI不是一個獨立的介面工具包,它只是提供一種人性化的統一調度介面,在Python下,默認調用Tkinter**。
# 三、PySimpleGUI的安裝 在Windows下,首先推薦安裝Python3.6以上的版本,至於為什麼不是Python2.7或其他,那是因為從對漢字的處理方式來看,Python3版本比Python2版本要方便(不要問我是如何知道的,當然還有許多其他的區別),而從進化來看,Python3肯定是版本越高越好,也許最新的版本可能會有一些小問題,但是能解決的問題還是問題嗎?人活著不就是為了解決問題來的嗎? Python3.6自帶pip版本,用pip來安裝的命令如下: “`cmd pip3 install PySimpleGUI “` 在linux下,需要將pip換成pip3,因為一般linux下默認安裝的python版本是2。
# 四、一個簡單的介面小程式。 先來一個直觀的吧,如果你看懂了,恭喜你,你真的具備編程天賦!沒有看明白?沒關係,好吧,開始這個程式的分析。 “`python import PySimpleGUI as sg layout = [[sg.Text('輸入你的名字'),sg.InputText()],[sg.OK()]] window = sg.Window('我的第一個GUI窗口').Layout(layout) button,(name,) = window.Read() window.Close() “` 將上述程式碼複製到你的ipython窗口/jupyter notebook窗口/vscode窗口/idle都是可以的,然後回車即可產生一個小窗口,當你在窗口中輸入名字後,按OK按鈕窗口即關閉。 <a href="https://s2.ax1x.com/2020/01/18/1pEX5T.png" class="highslide" onclick="return hs.expand(this,{slideshowGroup:'images'})"><img src="https://s2.ax1x.com/2020/01/18/1pEX5T.png" alt="1pEX5T.png" border="0" /></a>