資源簡介 (共34張PPT)Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.少兒編程課初識圖形化應用程序我們平時接觸的應用程序大致分三類:(電腦)桌面應用程序我們平時接觸的應用程序大致分三類:WEB應用程序我們平時接觸的應用程序大致分三類:(手機)桌面應用程序這也對應著計算機技術的發展和變遷今天我們來學習制作一個桌面應用開發這個小的桌面應用是基于以下目的掌握Python開發桌面應用程序的技術,可以開發日常學習、生活的小工具√復習并鞏固Python的基礎語法知識√學習一些其他的Python的知識,如第三方模塊的下載和安裝、列表生成式等√先來看以下Python中GUI相關的庫wxPythonPyQttkinterPython常用GUI圖形用戶界面(Graphical User Interface)庫單色板下面我們就是用tkinter制作單色板1想使用tkinter,需要先將它導入進來:4此時運行,就能看到我們的第一個小窗口了2然后創建一個窗口:from tkinter import *3想看到窗口的效果,還需要加上這句:root.mainloop()root = Tk()下面我們設置窗口的標題和大小1使用root的title方法,可以設置窗口標題3運行效果如下:2想設置窗口的大小,需要使用root的geometry方法:root.title('我的小窗口')root.geometry('600x400')這個方法的參數600x400就表示創建的窗口寬度是600,高度是400,單位是像素。除了標題和大小,我們還可以指定它出現在桌面上的位置1使用geometry時傳入600x400+300+200做參數root.geometry('600x400+300+200')300和200指的是窗口最左上角的點在屏幕上的坐標,也即窗口在屏幕上的位置。其中300指x軸坐標的大小,200指y軸坐標的大小。對于tkinter來說,屏幕左上角是原點,從原點出發,橫向向右是x軸,縱向向下是y軸。2接著我們給小窗口上色,想要給窗口上色,就需要先了解做桌面應用的思路12一般來說,做GUI程序就像畫畫這里的root窗口就像畫板3畫板上鋪上一張畫紙,然后在畫紙上畫在tkinter中,畫紙的角色由Frame擔當12定義畫紙這里的root窗口就是畫板,frame_basic定義好之后還需要將畫紙貼上去,如何來貼呢?對于畫板來說,畫紙貼在哪是有講究的,不能亂貼。這種如何貼畫紙的規矩,稱為布局。frame_basic = Frame(width=600, height=400, bg='red')比如tkinter中有個grid布局,它會將畫板分成幾行幾列的網格狀,你可以選擇將畫紙貼住第幾行第幾列的格子里。在tkinter中,畫紙的角色由Frame擔當12指定布局,就相當于將畫紙貼到了畫板上完整代碼如下frame_basic.grid(row=0, column=0)from tkinter import *root = Tk()root.title('我的小窗口')root.geometry('600x400+300+200')# 定義畫紙,背景顏色為orange橘黃色frame_basic = Frame(width=600, height=400, bg='orange')# 將frame_basic放在畫板的第一行第一列,也即第一個單元格frame_basic.grid(row=0, column=0)root.mainloop()3運行效果如下四色板練習Exercises密封線內不準答題基于單色板開發四色板,要求屏幕分成四等份,每份一種顏色。這個練習需要注意的就是每塊色塊的大小和布局,也即放到第幾行第幾列去12代碼如下:from tkinter import *root = Tk()root.title('我的小窗口')root.geometry('600x400+300+200')# 定義4個Frame,指定4種不同的背景顏色# 600 / 2 表示600除以2,作為定義的Frame的寬度frame1 = Frame(width=600 / 2, height=400 / 2, bg='orange')frame2 = Frame(width=600 / 2, height=400 / 2, bg='green')frame3 = Frame(width=600 / 2, height=400 / 2, bg='pink')frame4 = Frame(width=600 / 2, height=400 / 2, bg='white')# 將4個Frame依次放入指定位置frame1.grid(row=0, column=0)frame2.grid(row=0, column=1)frame3.grid(row=1, column=0)frame4.grid(row=1, column=1)root.mainloop()實現效果如下隨機顏色的四色板下面我們讓每次運行時的色板顏色隨機出現1先來了解一種顏色表示的形式frame1 = Frame(width=600 / 2, height=400 / 2, bg='#F08080')2RGB色彩模式RGB色彩模式是一種顏色標準,目前的顯示器大都采用了這種顏色標準。這里的RGB是紅色Red,綠色Green和藍色Blue的首字母組合。電腦屏幕上的所有顏色,都由這三種色光按照不同的比例混合而成的。在電腦中,RGB的所謂“多少”是指亮度,并使用整數來表示。通常情況下,RGB各有256級亮度,用數字表示為從0、1、2...直到255。注意雖然數字最高是255,但0也是數值之一,因此共256級。使用紅綠藍的這256個數值,我們就能“調制”顏色了。比如黑色可以表示為“000”,第一個0表示Red的亮度值,第2個表示綠色的亮度值,第3個表示藍色的亮度值。思考一下,如果是白色,用什么來表示?白色就是255255255,但是這樣不方便閱讀,比如2552550就不知道那幾位表示什么顏色了1我們需要了解進制的概念二進制 十進制 十六進制 二進制 十進制 十六進制0000 0 0 1000 8 80001 1 1 1001 9 90010 2 2 1010 10 A0011 3 3 1011 11 B0100 4 4 1100 12 C0101 5 5 1101 13 D0110 6 6 1110 14 E0111 7 7 1111 15 F二進制、十進制、十六進制對照表接下來我們簡單來說說進制之間的轉換1十進制轉二進制除二取余,得到的商再除以二,依次類推直到商為零或一時為止,然后將每次的余數倒序排列2十進制轉十六進制和這類似15 15對應的十六進制,就是FF,也就是說,255對應的十六進制是FF也就是說,使用十六進制我們就可以讓RGB這三個數值的格式標準起來0-2550-2550-25500-FF00-FF00-FF0000FF顏色:十進制:十六進制:六位十六進制:了解了屏幕顏色的組成原理之后,我們就可以產生隨機顏色了。1定義方法,用于產生隨機顏色,也即產生六位十六進制字符串2然后把Frame的bg參數指定為bg=get_color()就能取得一個隨機顏色def get_color():color = ''colors = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']for i in range(6):# 隨機0-15內的數,作為下標去取colors中的字符index = random.randint(0, 15)# 拼接成6位的字符串color += colors[index]return '#' + color練習Exercises密封線內不準答題根據四色板程序編寫九色板程序,也即窗口平分為3行3列共9塊,每塊顏色隨機。多色板在4色板的基礎上,只要稍加改造這段代碼,就可以做出任意多行任意多列的多色板來。1比如想開發個九色板,那定義的Frame的寬和高要除以32當然,這些參數可以配套使用frame1 = Frame(width=600 / 3, height=400 / 3, bg=get_color())…… # 定義其他Frame,此處省略frame1.grid(row=0, column=0)frame2.grid(row=0, column=1)frame3.grid(row=0, column=2)frame4.grid(row=1, column=0)frame5.grid(row=1, column=1)frame6.grid(row=1, column=2)frame7.grid(row=2, column=0)frame8.grid(row=2, column=1)frame9.grid(row=2, column=2)思考一下:這個過程能不能優化呢?下面我們就優化下重復的過程,并作出通用性的多色板來1首先將9色板的開發過程使用循環替代2如果是4行4列、4行3列、n行n列,我們只需要把上面的3給換成變量就行了for i in range(3):for j in range(3):frame = Frame(width=600 / 3, height=400 / 3, bg=get_color())frame.grid(row=i, column=j)# 定義行數row_num = 4# 定義列數column_num = 3# 循環創建Frame,并指定其位置for i in range(row_num):for j in range(column_num):frame = Frame(width=600 / column_num, height=400 / row_num, bg=get_color())frame.grid(row=i, column=j)注意程序中Frame的寬度是600除以列數,高度是400除以行數最后,我們再做一點美化和限制1首先是給色塊間添加分割線2可以設置窗口不可改變大小,這樣就防止了窗口因拖動而變形frame.grid(row=i, column=j, padx=1, pady=1)padx用于設置x軸方向色塊間的間隔,pady用于設置y軸方向上色塊間的間隔,單位都是像素。# 此時因為添加了分割線,就加大了寬度和高度,當然這個要根據實際情況調整root.maxsize(width=620, height=420)root.minsize(width=620, height=420)這樣,我們不可改變大小的任意行列的多色板就做好了總結Summarytkinter的基本思路,以及Tk、Frame的使用√GridLayout布局的使用√RGB三原色原理及顏色的十六進制表示形式√Thanks! 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫