吳玉棟
隨著新課改的進一步深化,筆者所在地區(qū)的中小學信息技術教材增加了Python程序設計語言章節(jié),Python是一種面向對象的解釋型計算機程序設計語言,能夠把用其他語言制作的各種模塊很輕松地聯(lián)結在一起。Python語言簡明,邏輯清晰,適合中小學階段的學生學習。
在常規(guī)情況下,使用Python編制好的程序代碼是命令行界面執(zhí)行方式;tkinter是Python中制作GUI界面的入門模塊,語法簡單,可以快速上手制作學習。這里,筆者利用tkinter模塊制作一個簡單的隨機點名或者提問的小程序,在課堂上,教師可以使用該程序對本班級內的學生進行隨機點名或提問,進而活躍課堂氣氛。
● 功能分析
可視化編程是一個系統(tǒng)工程,要遵循“功能—界面—代碼”的基本設計順序,核心的內容是數據的組織、變化與流轉。隨機點名小程序要實現的功能是,在不同的班級中,輸入班級號然后點擊按鈕,隨機顯示出該班級中某一名學生的姓名,再次點擊按鈕,隨機顯示另一名學生的姓名。在本案例中,原始數據保存在文本文件中,通過open()函數讀取到內存的變量列表中,再按照班級進行字典的鍵值對映射,獲取的班級號作為字典的鍵,獲取的班級名單作為字典中班級映射的值?!伴_始”按鈕的功能就是從字典的值中隨機取出一個學生姓名,在窗體上顯示出來。
因此,筆者計劃使用兩個模塊,分別是tkinter和rendom,tkinter模塊用于制作GUI窗體;random模塊用來隨機抽取列表中的元素。規(guī)劃三個窗體控件,輸入班級號,顯示抽取的姓名和開始抽取的按鈕。
● 引入模塊
Python可以通過引用或者調用模塊,實現使用模塊中的函數和功能。下面,簡要介紹一下模塊的調用方法(如下表)。
在調用模塊的方式中,筆者推薦使用第二種方式,調用模塊并且使用別名和程序中的其他函數進行區(qū)分,這樣程序代碼看起來更清晰,易讀性更強。調用模塊的代碼如圖1所示。
● 制作窗體
在tkinter模塊中需要使用Tk()函數,生成GUI窗體并命名為ROOT。常見的窗體包含的部件有標題、邊框等,且需要使用主消息循環(huán)模式設置窗體始終顯示在屏幕。設置窗口的標題為“隨機提問”,窗口的大小為300×200像素,窗口的邊框不可調。包含的代碼如下頁圖2所示。
● 添加控件
在可視化的程序中,用于人機交互的部分通常稱之為窗口或控件,在tkinter中具備基本的常用控件,用于制作可視化的小程序。根據程序的功能分析,筆者計劃添加文本標簽(Label)——分別用于在窗體上顯示提示文字、隨機抽取的結果,文本框(Entry)——用于輸入班級號,按鈕(Button)——用于開始隨機抽取姓名,將其作為程序的主要輸入輸出功能部分。包含的代碼如圖3所示。
控件添加完成,按F5鍵查看界面運行效果,如圖4所示。
● 分析功能
程序的核心部分是數據的組織、變化和流轉,這里要制作的程序就是要讀取文本文件中的數據,進行遍歷轉為列表,再把列表中的元素按照班級映射為字典,并從文本框中獲取班級號,從字典中獲取該班級號對應的列表,再隨機抽取該列表中的某個元素,顯示到文本標簽上。
功能分析:文本文件的內部格式如圖5所示,班級和姓名使用一個制表符間隔,常用信息可以先從Excel復制到文本文件,接著在Python中使用open()函數打開文本文件,使用readlines將其全部讀取為一個列表,并遍歷該列表,替換其中每個元素尾部的回車符號,進而轉換為子列表,讀取其中的第一個元素增加到字典,第二個元素作為該鍵的值保存到字典中。流程圖如圖6所示,自定義函數代碼如下頁圖7所示。需要注意的是,x.get()用于獲取文本框中的數據,x.set()用于設置文本標簽的值,x.choice()用于隨機從列表中獲取一個元素。
● 添加代碼
數據流分析過程為:首先用戶在文本框中輸入班級數據,點擊“開始”按鈕,根據接收到的數據,從字典中獲取指定鍵映射的值,并從值中隨機抽取一個元素,傳遞到文本標簽并顯示,此時文本框和文本標簽中的文本要以變量的形式顯示,“開始”按鈕控件調用自定義函數實現以上功能。
文本框代碼如圖8所示。
文本標簽代碼如圖9所示。
開始按鈕代碼如圖10所示。
程序最終運行界面及效果如圖11所示。
總之,通過簡單的隨機點名小程序的制作,讓學生體會到GUI界面的程序更方便用戶使用,而理解隱藏在控件背后的數據流轉和函數調用才是實現程序功能的核心。在此基礎上,讓學生進一步體會數據在程序中的組織和流轉過程,從而使其對程序的制作和使用有更深的理解。