您的位置:首页 > 脚本大全 > > 正文

如何用python做一个弹窗(python实现祝福弹窗效果)

更多 时间:2021-10-21 07:05:19 类别:脚本大全 浏览量:2944

如何用python做一个弹窗

python实现祝福弹窗效果

前言

猪年除夕之夜在亲人群抢红包心血来潮,想用python做比较好玩的新年祝福给亲人们乐呵乐呵。奈何初学python,底子比较薄,通过查阅相关博客,在一位网友的基础代码之下添加改进,使得弹出窗口多样化一些。写此博客,纪念一下(其实也是想清理一下这几个文件了,哈哈)。

代码准备

主要代码结构如下,还有很多可以改进的地方,以后深入学习了的话可以再回过头来看看

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 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中挑取了一些常见的字体存储在一个列表中。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 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
  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • *颜色文件如下:*
  • ,#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 纯黑'''
  •  
  •  
  • *祝福语文件如下:*
  • 万事如意
  • 恭喜发财
  • 财源滚滚
  • 一帆风顺
  • 岁岁平安
  • 财运亨通
  • 五福临门
  • 福星高照
  • 一帆风顺
  • 二龙腾飞
  • 三羊开泰
  • 四季平安
  • 五福临门
  • 六六大顺
  • 七星高照
  • 八方来财
  • 九九同心
  • 十全十美
  • 龙马精神
  • 神采奕奕
  • 一帆风顺
  • 顺理成章
  • 章月句星
  • 星罗棋布
  • 步步高升
  • 升官发财
  • 财源广进
  • 近水楼台
  • 泰然自若
  • 一代英豪
  • 九州生色
  • 八方捷报,
  • 一帆风顺,
  • 二龙腾飞,
  • 三羊开泰
  • ,四季平安,
  • 五福临门,
  • 七星高照,
  • 八方来财,
  • 万事胜意,
  • 合家幸福,
  • 民族崛起,
  • 彪炳千秋
  • 泰然自若
  • 九如之颂
  • 星罗棋布
  • 步步高升
  • 升官发财
  • 财源广进
  • 近水楼台
  • 海屋添寿
  • 日月长明
  • 升官发财
  • 海屋添寿
  • 运行效果

    如何用python做一个弹窗(python实现祝福弹窗效果)

    time.sleep()的存在使得窗口按照设定的时间间隔弹出,图片

    标签:弹窗 Python