點擊上方「菜鳥編程大本營」,選「星標」公眾號
後臺輸入:福利,領取一波福利
萬聖節是國外的傳統節日,現在國內很多人也玩。小到幼兒園的小朋友玩南瓜燈,大到大學校園玩面具派對,化妝舞會!萬聖節當天國外的小孩會穿上化妝服,戴上面具,挨家挨戶收集糖果,流傳著「不給糖就搗蛋」的習俗。
既然是玩Python,小編周末在家做了一個小小的代碼也可以玩萬聖節哦,代碼只有100行不到,主要是使用pyttsx3和tk這兩個庫來完成。非常適合小白學習使用,我們一起來看一下。
01 pyttsx3介紹pyttsx3是Python中的文本到語音轉換庫,可在本地工作。
1).安裝安裝步驟十分簡單,使用pip命令即可:
2).特點完全離線的文本到語音轉換模塊
播放速度可調整
播放音量可調整
可對聲音進行選擇
可以將音頻保存在本地
簡單強大直觀
3). 使用方法基礎使用播放語音
import pyttsx3pyttsx3.speak("I will speak this text")對聲音進行設置播放,小編整理了一些示例代碼:
由上面的程序可以對不同聲音的處理方式,詳細使用方法可見官方文檔https://pyttsx3.readthedocs.io/en/latest/。
小編就不在這裡詳細介紹了,對於tkinter的使用,之前很多文章都介紹過了,小編也不贅述了!好,下面我們趕緊動手做一個萬聖節的小程序。
02 搞怪程序設計
01.整體設計思路以萬聖節為背景,以萬聖節中「不給糖就搗蛋」的習俗,設計搗蛋界面,直到收到糖果為止。整個設計以tkinter為基礎,在用戶不給糖的情況,分別用聲音和彈窗進行搗蛋,迫使用戶贈送糖果。 02.界面設計搞怪軟體的界面如下,包含了祝福語標籤和按鍵標籤,下面小編將對其實現原理進行解析。
03).代碼設計如下
在設計中,小編遇到了一些困難,同時將標籤和按鍵放在背景圖上,如果以主界面window為載體,他們的分布會相互影響,經過資料查詢,小編以畫布canvas作為載體,通過操作canvas.create_window指定label和button的位置和大小,成功的實現了在背景圖片添加label和button的目的,顯示效果如上圖。03按鍵函數的設計為了實現只有給糖操作才能實現退出界面的效果,對不同的按鍵進行不同的函數設計。並使用串口和語音顯示和播放不同的搞怪信息,搞怪信息由初始化中longtext定義,通過隨機數進行隨機獲取,詳細代碼如下:
按鍵內容的設計:
點擊給糖的操作:
點擊不給糖的操作:
對於主界面的窗口關閉操作是不可行的,這裡定義了closeWindow函數,彈出警告窗口,內容從longtext中隨機選取。在按鍵「偏偏不給糖」中,通過yes = tk.Toplevel(window),yes.geometry('300x200')創建彈出窗口,並在上面設置圖標和按鍵,並指定子窗口按鍵的函數closeno,退出子窗口,並在其中加入語音模塊pyttsx3,發出相應的聲音,顯示界面如下所示:在按鍵「給你」中,與按鍵「偏偏不給糖」定義相似,使用語音模塊和label在子窗口顯示,但在子按鍵綁定中綁定closeyes函數,會同時退出子窗口和主窗口,如果用戶點擊了關閉子窗口未點擊確定,會通過closeall關閉主窗口。通過上面的設計便達到了搞怪的目的,只有在給糖的情況下進行退出。
04.
視頻演示
說了這麼多,我們一起來看一下效果,我用視頻給大家demo一下!小編在這裡祝大家萬聖節快樂!多多點讚噢!不然小編也到搗蛋了!
若對本篇有興趣的同學,需要源碼可以在後臺輸入:萬聖節
推薦閱讀
每個程式設計師都是從菜鳥開始成長起來的,沒有人生下來就是程式設計師高手。菜鳥編程大本營,專注於分享趣味的編程技巧,不限於Java, Python ,Go, Javascript等語言,讓菜鳥愛上編程,進階成為高手。