溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python實(shí)現(xiàn)彈窗祝福效果

發(fā)布時(shí)間:2020-10-17 02:11:33 來(lái)源:腳本之家 閱讀:226 作者:Onebear599 欄目:開發(fā)技術(shù)

前言

豬年除夕之夜在親人群搶紅包心血來(lái)潮,想用python做比較好玩的新年祝福給親人們樂呵樂呵。奈何初學(xué)Python,底子比較薄,通過查閱相關(guān)博客,在一位網(wǎng)友的基礎(chǔ)代碼之下添加改進(jìn),使得彈出窗口多樣化一些。寫此博客,紀(jì)念一下(其實(shí)也是想清理一下這幾個(gè)文件了,哈哈)。

代碼準(zhǔn)備

主要代碼結(jié)構(gòu)如下,還有很多可以改進(jìn)的地方,以后深入學(xué)習(xí)了的話可以再回過頭來(lái)看看

import tkinter as tk
import random
import threading # 使用多線程
import time
import functions # functions是自己建立的一個(gè)Python文件,后面會(huì)簡(jiǎn)單介紹一下

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('來(lái)自一雄的新年祝福') # 一雄是我的名
 window.geometry("300x100"+"+"+str(a)+"+"+str(b))
 tk.Label(window,
  text=random.sample(text_list, 1), # 標(biāo)簽的文字
  bg= random.sample(color_list, 1),  # 背景顏色
  font=(random.sample(font_list,1), 17),  # 字體和字體大小
  width=20, height=20 # 標(biāo)簽長(zhǎng)寬
  ).pack() # 固定窗口位置
 window.mainloop()


def bless(x):
 threads = []
 for i in range(x): # 需要的彈框數(shù)量
  t = threading.Thread(target=dow)
  threads.append(t)
  time.sleep(0.1)
  threads[i].start()


def main():
 num = int(input('請(qǐng)輸入需要的祝福數(shù)量:'))
 bless(num)


if __name__ == '__main__':
 main()

functions文件介紹

最初的代碼是dow()函數(shù)中直接設(shè)定背景顏色和祝福語(yǔ),我覺得顏色和祝福語(yǔ)都比較單一,于是從網(wǎng)上搜索了Python tkinter模塊支持的顏色并用正則表達(dá)式提出顏色代號(hào),程序運(yùn)行時(shí)隨機(jī)抽取一個(gè)顏色,祝福語(yǔ)同理。當(dāng)然所使用的字體也可以用同樣的方法,由于我能力有限,也擔(dān)心有些字體不支持的情況,從而從word中挑取了一些常見的字體存儲(chǔ)在一個(gè)列表中。

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得到的是一個(gè)列表,相加使得列表合并
 return color_list



def blesses():
 """提取祝福語(yǔ)"""
 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 藍(lán)紫羅蘭
,#9370DB MediumPurple 中紫色
,#7B68EE MediumSlateBlue 中暗藍(lán)色/中板巖藍(lán)
,#6A5ACD SlateBlue 石藍(lán)色/板巖藍(lán)
,#483D8B DarkSlateBlue 暗灰藍(lán)色/暗板巖藍(lán)
,#E6E6FA Lavender 淡紫色/熏衣草淡紫
,#F8F8FF GhostWhite 幽靈白
,#0000FF Blue 純藍(lán)
,#0000CD MediumBlue 中藍(lán)色
,#191970 MidnightBlue 午夜藍(lán)
,#00008B DarkBlue 暗藍(lán)色
,#000080 Navy 海軍藍(lán)
,#4169E1 RoyalBlue 皇家藍(lán)/寶藍(lán)
,#6495ED CornflowerBlue 矢車菊藍(lán)
,#B0C4DE LightSteelBlue 亮鋼藍(lán)
,#778899 LightSlateGray 亮藍(lán)灰/亮石板灰
,#708090 SlateGray 灰石色/石板灰
,#1E90FF DodgerBlue 閃蘭色/道奇藍(lán)
,#F0F8FF AliceBlue 愛麗絲藍(lán)
,#4682B4 SteelBlue 鋼藍(lán)/鐵青
,#87CEFA LightSkyBlue 亮天藍(lán)色
,#87CEEB SkyBlue 天藍(lán)色
,#00BFFF DeepSkyBlue 深天藍(lán)
,#ADD8E6 LightBlue 亮藍(lán)
,#B0E0E6 PowderBlue 粉藍(lán)色/火藥青
,#5F9EA0 CadetBlue 軍蘭色/軍服藍(lán)
,#F0FFFF Azure 蔚藍(lán)色
,#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 純黑'''


*祝福語(yǔ)文件如下:*
萬(wàn)事如意
恭喜發(fā)財(cái)
財(cái)源滾滾
一帆風(fēng)順
歲歲平安
財(cái)運(yùn)亨通
五福臨門
福星高照
一帆風(fēng)順
二龍騰飛
三羊開泰
四季平安
五福臨門
六六大順
七星高照
八方來(lái)財(cái)
九九同心
十全十美
龍馬精神
神采奕奕
一帆風(fēng)順
順理成章
章月句星
星羅棋布
步步高升
升官發(fā)財(cái)
財(cái)源廣進(jìn)
近水樓臺(tái)
泰然自若
一代英豪
九州生色
八方捷報(bào),
一帆風(fēng)順,
二龍騰飛,
三羊開泰
,四季平安,
五福臨門,
七星高照,
八方來(lái)財(cái),
萬(wàn)事勝意,
合家幸福,
民族崛起,
彪炳千秋
泰然自若 
九如之頌 
星羅棋布 
步步高升 
升官發(fā)財(cái)
財(cái)源廣進(jìn)
近水樓臺(tái)
海屋添壽 
日月長(zhǎng)明 
升官發(fā)財(cái) 
海屋添壽 

運(yùn)行效果

python實(shí)現(xiàn)彈窗祝福效果

time.sleep()的存在使得窗口按照設(shè)定的時(shí)間間隔彈出,圖片所展示的是最終結(jié)果。選擇終止程序所有的彈窗便可消失了

結(jié)語(yǔ)

艾薩克牛頓說過:“我之所以站的高,是因?yàn)槲艺驹诰奕说募绨蛏??!蔽沂窃趧e人的簡(jiǎn)單的彈出窗口程序的基礎(chǔ)上一步步借鑒改進(jìn),才得到這個(gè)結(jié)果的。雖然這個(gè)程序?qū)Υ蟛糠秩藖?lái)說很簡(jiǎn)單,也很輕易實(shí)現(xiàn),但是我還是花了一定的時(shí)間,查閱了很多的代碼才調(diào)試這個(gè)結(jié)果,甘之如飴吧,希望自己再接再厲!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI