本書共分為6章。第1章GUI編程, 主要包括GUI簡(jiǎn)介和GUI的開發(fā)工具包等知識(shí)點(diǎn); 第2章Tkinter, 主要包括Tkinter的安裝、Misc類、Wm類、主窗口、控件、布局管理器、事件處理、對(duì)話框和ttk模塊等知識(shí)點(diǎn); 第3章wxPython, 主要包括wxPython的安裝、wxPython的基本要素、應(yīng)用程序、窗口、控件、布局管理器、事件處理、消息對(duì)話框、網(wǎng)格和滾動(dòng)面板等知識(shí)點(diǎn); 第4章游戲編程, 主要包括游戲編程簡(jiǎn)介和游戲的開發(fā)工具包等知識(shí)點(diǎn); 第5章PyGame, 主要包括PyGame的安裝、PyGame的基礎(chǔ)知識(shí)、Surface對(duì)象、Rect對(duì)象、窗口圖層、圖片加載、圖片變形、圖片蒙版、圖形繪制、文本顯示、時(shí)間控制、事件處理、精靈、精靈組、碰撞檢測(cè)、音效和音樂等知識(shí)點(diǎn); 第6章Cocos2d, 主要包括Cocos2d的安裝、Cocos2d的基礎(chǔ)知識(shí)、導(dǎo)演、節(jié)點(diǎn)、事件、粒子系統(tǒng)、動(dòng)作、音效和音樂等知識(shí)點(diǎn)。
隨著互聯(lián)網(wǎng)的快速崛起,眾多編程語言進(jìn)入了大眾的視野。尤其是目前的大數(shù)據(jù)、人工智能等技術(shù)領(lǐng)域更是火遍大江南北,幾乎每天都可以從各種新聞報(bào)道中看到它們的身影,相關(guān)工作崗位所需要的技術(shù)人才更是一度出現(xiàn)供不應(yīng)求的現(xiàn)象,而Python正是實(shí)現(xiàn)上述技術(shù)的最佳編程語言。
Python橫跨多個(gè)互聯(lián)網(wǎng)核心技術(shù)領(lǐng)域,并且以其簡(jiǎn)單高效的特點(diǎn),被廣泛應(yīng)用于各種應(yīng)用場(chǎng)景,包括GUI開發(fā)、游戲開發(fā)、Web開發(fā)、運(yùn)維自動(dòng)化、科學(xué)計(jì)算、數(shù)據(jù)可視化、數(shù)據(jù)挖掘及人工智能等。
此外,隨著國家對(duì)未來的人工智能等技術(shù)領(lǐng)域的重視和布局,更凸顯出Python的重要地位。從2018年起,浙江省信息技術(shù)教材啟用Python,放棄VB,這一改動(dòng)也意味著Python將成為浙江省高考內(nèi)容之一。更有前瞻性的是,山東省最新出版的小學(xué)信息技術(shù)教材,在六年級(jí)課本中也加入了Python的相關(guān)內(nèi)容——終于,小學(xué)生也開始學(xué)習(xí)Python了!
本書正是在這樣的背景之下應(yīng)運(yùn)而生。本書是Python全棧開發(fā)系列的第2冊(cè),全書共分為6章,重點(diǎn)講解GUI編程和游戲編程的四大主流模塊,即Tkinter、wxPython、PyGame和Cocos2d,并搭配200多個(gè)示例代碼和4個(gè)綜合項(xiàng)目,理論知識(shí)與實(shí)戰(zhàn)開發(fā)并重,可以幫助讀者快速、深入地理解和應(yīng)用GUI編程和游戲編程的相關(guān)技術(shù)。
著名的華人經(jīng)濟(jì)學(xué)家張五常曾經(jīng)說過,“即使世界上99%的經(jīng)濟(jì)學(xué)論文沒有發(fā)表,世界依然會(huì)發(fā)展成現(xiàn)在的樣子”,而互聯(lián)網(wǎng)時(shí)代的發(fā)展同樣具有其必然性,所以要想成功,我們就必須順勢(shì)而為,真正地站穩(wěn)在時(shí)代的風(fēng)口之上。
勘誤
在本書的編寫過程中,筆者始終本著科學(xué)、嚴(yán)謹(jǐn)?shù)膽B(tài)度,力求精益求精,但書中難免存在疏漏之處,懇請(qǐng)廣大讀者批評(píng)指正。
致謝
首先,感謝每位讀者,感謝你在茫茫書海中選擇了這本書,筆者衷心地祝愿各位讀者能夠借助本書學(xué)有所成,并最終順利地完成自己的學(xué)習(xí)目標(biāo)、學(xué)業(yè)考試和職業(yè)選擇。
其次,感謝筆者的導(dǎo)師、同事、學(xué)生和朋友,感謝他們不斷地鼓勵(lì)和幫助筆者,非常榮幸能夠和這些聰明、勤奮、努力、踏實(shí)的人一起學(xué)習(xí)、工作和交流。
最后,感謝筆者的父母,是他們給予了我所需要的一切,沒有他們無私的愛,就沒有筆者今天的事業(yè),更不能達(dá)成我的人生目標(biāo)!
此外,本書在編寫和出版過程中得到了來自沈陽工業(yè)大學(xué)的牛連強(qiáng)教授、大連東軟信息學(xué)院的張明寶副教授、大連華天軟件有限公司的陳秋男先生、51CTO學(xué)堂的曹亞莉女士、印孚瑟斯技術(shù)(中國)有限公司的崔巍先生和清華大學(xué)出版社的趙佳霓編輯的大力支持和幫助,在此表示衷心的感謝。
夏正東
2022年2月22日于遼寧省大連市
夏正東,十余年一線軟件開發(fā)經(jīng)驗(yàn),長(zhǎng)期從事于Web系統(tǒng)、GUI開發(fā)框架以及數(shù)據(jù)分析等領(lǐng)域的研發(fā)和教學(xué)工作,精通Python、PHP、Web前端以及Linux等技術(shù),曾就職于東軟、金山以及電訊盈科等公司,并在遼寧部分高校和企業(yè)擔(dān)任外聘計(jì)算機(jī)講師和資深企培講師等職務(wù),后自主創(chuàng)業(yè)至今,任大連科匯融創(chuàng)科技有限公司副總經(jīng)理,分管研發(fā)和企培等工作。
目錄
第1章GUI編程
1.1GUI簡(jiǎn)介
1.1.1GUI的特點(diǎn)
1.1.2GUI的設(shè)計(jì)原則
1.2GUI的開發(fā)工具包
第2章Tkinter
2.1Tkinter的安裝
2.2Misc類和Wm類
2.3主窗口
2.4控件
2.4.1跟蹤控件的值
2.4.2標(biāo)簽(Label類)
2.4.3按鈕(Button類)
2.4.4單選按鈕(Radiobutton類)
2.4.5多選按鈕(Checkbutton類)
2.4.6文本輸入框(Entry類)
2.4.7下拉菜單(OptionMenu類)
2.4.8列表框(Listbox類)
2.4.9靜態(tài)框(LabelFrame類)
2.4.10微調(diào)節(jié)器(Spinbox類)
2.4.11滑塊(Scale類)
2.4.12消息(Message類)
2.4.13文本(Text類)
2.4.14滾動(dòng)條(Scrollbar類)
2.4.15框架(Frame類)
2.4.16頂級(jí)窗口(Toplevel類)
2.4.17菜單欄(Menu類)
2.5布局管理器
2.5.1pack布局管理器
2.5.2grid布局管理器
2.5.3place布局管理器
2.6事件處理
2.6.1事件處理的4要素
2.6.2事件序列
2.6.3事件綁定
2.6.4事件
2.6.5系統(tǒng)級(jí)事件
2.7對(duì)話框
2.7.1消息對(duì)話框
2.7.2文件對(duì)話框
2.7.3顏色選擇對(duì)話框
2.8ttk模塊
2.8.1主題和樣式
2.8.2控件
2.9項(xiàng)目實(shí)戰(zhàn): 文本編輯器
2.9.1程序概述
2.9.2程序編寫
第3章wxPython
3.1wxPython的安裝
3.2wxPython的基本要素
3.3應(yīng)用程序
3.4窗口
3.4.1框架(Frame類)
3.4.2內(nèi)容面板(Panel類)
3.4.3菜單欄(MenuBar類)
3.4.4分隔窗口(SplitterWindow類)
3.5控件
3.5.1靜態(tài)文本(StaticText類)
3.5.2文本輸入框(TextCtrl類)
3.5.3普通按鈕(Button類)
3.5.4位圖按鈕(BitmapButton類)
3.5.5開關(guān)按鈕(ToggleButton類)
3.5.6單選按鈕(RadioButton類)
3.5.7單選框(RadioBox類)
3.5.8復(fù)選框(CheckBox類)
3.5.9可編輯下拉菜單(ComboBox類)
3.5.10不可編輯下拉菜單(Choice類)
3.5.11列表框(ListBox類)
3.5.12靜態(tài)框(StaticBox類)
3.5.13靜態(tài)圖像(StaticBitmap類)
3.5.14靜態(tài)直線(StaticLine類)
3.5.15微調(diào)節(jié)器(SpinCtrl類)
3.5.16滑塊(Slider類)
3.5.17樹(TreeCtrl類)
3.5.18工具欄(ToolBar類)
3.5.19狀態(tài)欄(StatusBar類)
3.6布局管理器
3.6.1BoxSizer布局管理器
3.6.2StaticBoxSizer布局管理器
3.6.3GridSizer布局管理器
3.6.4FlexGridSizer布局管理器
3.7事件處理
3.7.1事件處理的4要素
3.7.2事件
3.8消息對(duì)話框
3.9網(wǎng)格
3.10滾動(dòng)面板
3.11項(xiàng)目實(shí)戰(zhàn): QQ
3.11.1程序概述
3.11.2創(chuàng)建數(shù)據(jù)庫
3.11.3程序目錄結(jié)構(gòu)
3.11.4程序編寫
第4章游戲編程
4.1游戲編程簡(jiǎn)介
4.2游戲的開發(fā)工具包
第5章PyGame
5.1PyGame的安裝
5.2PyGame的基礎(chǔ)知識(shí)
5.2.1基本概念
5.2.2坐標(biāo)系
5.2.3基本開發(fā)流程
5.3Surface對(duì)象和Rect對(duì)象
5.3.1Surface對(duì)象
5.3.2Rect對(duì)象
5.4窗口圖層
5.5圖片加載
5.6圖片變形
5.7圖片蒙版
5.8圖形繪制
5.9文本顯示
5.9.1pygame.font模塊
5.9.2pygame.freetype模塊
5.10時(shí)間控制
5.11事件處理
5.11.1事件和事件隊(duì)列
5.11.2窗口事件
5.11.3鍵盤事件
5.11.4鼠標(biāo)事件
5.11.5自定義事件
5.12精靈、精靈組和碰撞檢測(cè)
5.12.1精靈和精靈組
5.12.2碰撞檢測(cè)
5.13音效和音樂
5.13.1音效
5.13.2音樂
5.14項(xiàng)目實(shí)戰(zhàn): 五子棋
5.14.1程序概述
5.14.2程序編寫
第6章Cocos2d
6.1Cocos2d的安裝
6.2Cocos2d的基礎(chǔ)知識(shí)
6.2.1基本元素
6.2.2坐標(biāo)系
6.2.3基本開發(fā)流程
6.3導(dǎo)演(Director類)
6.4節(jié)點(diǎn)(CocosNode類)
6.4.1場(chǎng)景(Scene類)
6.4.2圖層(Layer類)
6.4.3精靈(Sprite類)
6.4.4菜單(Menu類)
6.5事件
6.5.1鍵盤事件
6.5.2鼠標(biāo)事件
6.6粒子系統(tǒng)
6.7動(dòng)作(Action類)
6.7.1瞬時(shí)動(dòng)作
6.7.2間隔動(dòng)作
6.8音效和音樂
6.8.1Pyglet
6.8.2Pygame/SDL
6.9項(xiàng)目實(shí)戰(zhàn): 飛機(jī)大戰(zhàn)
6.9.1程序概述
6.9.2程序目錄結(jié)構(gòu)
6.9.3程序編寫