您好,登錄后才能下訂單哦!
前言
豬年除夕之夜在親人群搶紅包心血來潮,想用python做比較好玩的新年祝福給親人們樂呵樂呵。奈何初學Python,底子比較薄,通過查閱相關博客,在一位網友的基礎代碼之下添加改進,使得彈出窗口多樣化一些。寫此博客,紀念一下(其實也是想清理一下這幾個文件了,哈哈)。
代碼準備
主要代碼結構如下,還有很多可以改進的地方,以后深入學習了的話可以再回過頭來看看
import tkinter as tk import random import threading # 使用多線程 import time import functions # functions是自己建立的一個Python文件,后面會簡單介紹一下 def dow(): color_list = functions.colors() font_list = ['黑體', '宋體', '仿宋', '微軟雅黑', '楷體', '隸書', '華文琥珀', '幼圓', '華文行楷', '新宋體'] text_list = functions.blesses() window = tk.Tk() width=window.winfo_screenwidth() height=window.winfo_screenheight() a=random.randrange(0,width) b=random.randrange(0,height) window.title('來自一雄的新年祝福') # 一雄是我的名 window.geometry("300x100"+"+"+str(a)+"+"+str(b)) tk.Label(window, text=random.sample(text_list, 1), # 標簽的文字 bg= random.sample(color_list, 1), # 背景顏色 font=(random.sample(font_list,1), 17), # 字體和字體大小 width=20, height=20 # 標簽長寬 ).pack() # 固定窗口位置 window.mainloop() def bless(x): threads = [] for i in range(x): # 需要的彈框數量 t = threading.Thread(target=dow) threads.append(t) time.sleep(0.1) threads[i].start() def main(): num = int(input('請輸入需要的祝福數量:')) bless(num) if __name__ == '__main__': main()
functions文件介紹
最初的代碼是dow()函數中直接設定背景顏色和祝福語,我覺得顏色和祝福語都比較單一,于是從網上搜索了Python tkinter模塊支持的顏色并用正則表達式提出顏色代號,程序運行時隨機抽取一個顏色,祝福語同理。當然所使用的字體也可以用同樣的方法,由于我能力有限,也擔心有些字體不支持的情況,從而從word中挑取了一些常見的字體存儲在一個列表中。
import re def colors(): """提取所有的顏色""" color_list = [] with open('colors.txt', 'r', encoding = 'utf-8') as fo: for i in fo.readlines(): ret = re.findall(r"[A-Z][a-z][A-Za-z]*",i) # 提取英文 color_list += ret # ret得到的是一個列表,相加使得列表合并 return color_list def blesses(): """提取祝福語""" bless_list = [] with open('blesses.txt', 'r', encoding = 'utf-8') as fo: for i in fo.readlines(): pattern =re.compile(u"[\u4e00-\u9fa5]+") # 提取全部的中文 result=re.findall(pattern, i) bless_list += result return bless_list
*顏色文件如下:* ,#FFC0CB Pink 粉紅 ,#DC143C Crimson 深紅/猩紅 ,#FFF0F5 LavenderBlush 淡紫紅 ,#DB7093 PaleVioletRed 弱紫羅蘭紅 ,#FF69B4 HotPink 熱情的粉紅 ,#FF1493 DeepPink 深粉紅 ,#C71585 MediumVioletRed 中紫羅蘭紅 ,#DA70D6 Orchid 暗紫色/蘭花紫 ,#D8BFD8 Thistle 薊色 ,#DDA0DD Plum 洋李色/李子紫 ,#EE82EE Violet 紫羅蘭 ,#FF00FF Magenta 洋紅/玫瑰紅 ,#FF00FF Fuchsia 紫紅/燈籠海棠 ,#8B008B DarkMagenta 深洋紅 ,#800080 Purple 紫色 ,#BA55D3 MediumOrchid 中蘭花紫 ,#9400D3 DarkViolet 暗紫羅蘭 ,#9932CC DarkOrchid 暗蘭花紫 ,#4B0082 Indigo 靛青/紫蘭色 ,#8A2BE2 BlueViolet 藍紫羅蘭 ,#9370DB MediumPurple 中紫色 ,#7B68EE MediumSlateBlue 中暗藍色/中板巖藍 ,#6A5ACD SlateBlue 石藍色/板巖藍 ,#483D8B DarkSlateBlue 暗灰藍色/暗板巖藍 ,#E6E6FA Lavender 淡紫色/熏衣草淡紫 ,#F8F8FF GhostWhite 幽靈白 ,#0000FF Blue 純藍 ,#0000CD MediumBlue 中藍色 ,#191970 MidnightBlue 午夜藍 ,#00008B DarkBlue 暗藍色 ,#000080 Navy 海軍藍 ,#4169E1 RoyalBlue 皇家藍/寶藍 ,#6495ED CornflowerBlue 矢車菊藍 ,#B0C4DE LightSteelBlue 亮鋼藍 ,#778899 LightSlateGray 亮藍灰/亮石板灰 ,#708090 SlateGray 灰石色/石板灰 ,#1E90FF DodgerBlue 閃蘭色/道奇藍 ,#F0F8FF AliceBlue 愛麗絲藍 ,#4682B4 SteelBlue 鋼藍/鐵青 ,#87CEFA LightSkyBlue 亮天藍色 ,#87CEEB SkyBlue 天藍色 ,#00BFFF DeepSkyBlue 深天藍 ,#ADD8E6 LightBlue 亮藍 ,#B0E0E6 PowderBlue 粉藍色/火藥青 ,#5F9EA0 CadetBlue 軍蘭色/軍服藍 ,#F0FFFF Azure 蔚藍色 ,#E0FFFF LightCyan 淡青色 ,#AFEEEE PaleTurquoise 弱綠寶石 ,#00FFFF Cyan 青色 ,#00FFFF Aqua 淺綠色/水色 ,#00CED1 DarkTurquoise 暗綠寶石 ,#2F4F4F DarkSlateGray 暗瓦灰色/暗石板灰 ,#008B8B DarkCyan 暗青色 ,#008080 Teal 水鴨色 ,#48D1CC MediumTurquoise 中綠寶石 ,#20B2AA LightSeaGreen 淺海洋綠 ,#40E0D0 Turquoise 綠寶石 ,#7FFFD4 Aquamarine 寶石碧綠 ,#66CDAA MediumAquamarine 中寶石碧綠 ,#00FA9A MediumSpringGreen 中春綠色 ,#F5FFFA MintCream 薄荷奶油 ,#00FF7F SpringGreen 春綠色 ,#3CB371 MediumSeaGreen 中海洋綠 ,#2E8B57 SeaGreen 海洋綠 ,#F0FFF0 Honeydew 蜜色/蜜瓜色 ,#90EE90 LightGreen 淡綠色 ,#98FB98 PaleGreen 弱綠色 ,#8FBC8F DarkSeaGreen 暗海洋綠 ,#32CD32 LimeGreen 閃光深綠 ,#00FF00 Lime 閃光綠 ,#228B22 ForestGreen 森林綠 ,#008000 Green 純綠 ,#006400 DarkGreen 暗綠色 ,#7FFF00 Chartreuse 黃綠色/查特酒綠 ,#7CFC00 LawnGreen 草綠色/草坪綠 ,#ADFF2F GreenYellow 綠黃色 ,#556B2F DarkOliveGreen 暗橄欖綠 ,#9ACD32 YellowGreen 黃綠色 ,#6B8E23 OliveDrab 橄欖褐色 ,#F5F5DC Beige 米色/灰棕色 ,#FAFAD2 LightGoldenrodYellow 亮菊黃 ,#FFFFF0 Ivory 象牙色 ,#FFFFE0 LightYellow 淺黃色 ,#FFFF00 Yellow 純黃 ,#808000 Olive 橄欖 ,#BDB76B DarkKhaki 暗黃褐色/深卡嘰布 ,#FFFACD LemonChiffon 檸檬綢 ,#EEE8AA PaleGoldenrod 灰菊黃/蒼麒麟色 ,#F0E68C Khaki 黃褐色/卡嘰布 ,#FFD700 Gold 金色 ,#FFF8DC Cornsilk 玉米絲色 ,#DAA520 Goldenrod 金菊黃 ,#B8860B DarkGoldenrod 暗金菊黃 ,#FFFAF0 FloralWhite 花的白色 ,#FDF5E6 OldLace 老花色/舊蕾絲 ,#F5DEB3 Wheat 淺黃色/小麥色 ,#FFE4B5 Moccasin 鹿皮色/鹿皮靴 ,#FFA500 Orange 橙色 ,#FFEFD5 PapayaWhip 番木色/番木瓜 ,#FFEBCD BlanchedAlmond 白杏色 ,#FFDEAD NavajoWhite 納瓦白/土著白 ,#FAEBD7 AntiqueWhite 古董白 ,#D2B48C Tan 茶色 ,#DEB887 BurlyWood 硬木色 ,#FFE4C4 Bisque 陶坯黃 ,#FF8C00 DarkOrange 深橙色 ,#FAF0E6 Linen 亞麻布 ,#CD853F Peru 秘魯色 ,#FFDAB9 PeachPuff 桃肉色 ,#F4A460 SandyBrown 沙棕色 ,#D2691E Chocolate 巧克力色 ,#8B4513 SaddleBrown 重褐色/馬鞍棕色 ,#FFF5EE Seashell 海貝殼 ,#A0522D Sienna 黃土赭色 ,#FFA07A LightSalmon 淺鮭魚肉色 ,#FF7F50 Coral 珊瑚 ,#FF4500 OrangeRed 橙紅色 ,#E9967A DarkSalmon 深鮮肉/鮭魚色 ,#FF6347 Tomato 番茄紅 ,#FFE4E1 MistyRose 淺玫瑰色/薄霧玫瑰 ,#FA8072 Salmon 鮮肉/鮭魚色 ,#FFFAFA Snow 雪白色 ,#F08080 LightCoral 淡珊瑚色 ,#BC8F8F RosyBrown 玫瑰棕色 ,#CD5C5C IndianRed 印度紅 ,#FF0000 Red 純紅 ,#A52A2A Brown 棕色 ,#B22222 FireBrick 火磚色/耐火磚 ,#8B0000 DarkRed 深紅色 ,#800000 Maroon 栗色 ,#FFFFFF White 純白 ,#F5F5F5 WhiteSmoke 白煙 ,#DCDCDC Gainsboro 淡灰色 ,#D3D3D3 LightGrey 淺灰色 ,#C0C0C0 Silver 銀灰色 ,#A9A9A9 DarkGray 深灰色 ,#808080 Gray 灰色 ,#696969 DimGray 暗淡灰 ,#000000 Black 純黑''' *祝福語文件如下:* 萬事如意 恭喜發財 財源滾滾 一帆風順 歲歲平安 財運亨通 五福臨門 福星高照 一帆風順 二龍騰飛 三羊開泰 四季平安 五福臨門 六六大順 七星高照 八方來財 九九同心 十全十美 龍馬精神 神采奕奕 一帆風順 順理成章 章月句星 星羅棋布 步步高升 升官發財 財源廣進 近水樓臺 泰然自若 一代英豪 九州生色 八方捷報, 一帆風順, 二龍騰飛, 三羊開泰 ,四季平安, 五福臨門, 七星高照, 八方來財, 萬事勝意, 合家幸福, 民族崛起, 彪炳千秋 泰然自若 九如之頌 星羅棋布 步步高升 升官發財 財源廣進 近水樓臺 海屋添壽 日月長明 升官發財 海屋添壽
運行效果
time.sleep()的存在使得窗口按照設定的時間間隔彈出,圖片所展示的是最終結果。選擇終止程序所有的彈窗便可消失了
結語
艾薩克牛頓說過:“我之所以站的高,是因為我站在巨人的肩膀上。”我是在別人的簡單的彈出窗口程序的基礎上一步步借鑒改進,才得到這個結果的。雖然這個程序對大部分人來說很簡單,也很輕易實現,但是我還是花了一定的時間,查閱了很多的代碼才調試這個結果,甘之如飴吧,希望自己再接再厲!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。