Python恋爱小助手之必拿下

作者:顾木子吖 时间:2023-09-22 13:09:00 

导语

害!现在是10月份了,国庆过完也降温了——还有几个月就过年了,哦吼~

这一年就快过去了,不知道小编带给大家这么多的表白代码都用了没?用了没吖?如果没用的话小编会继续助攻!

不知道各位单身人士,有没有人从单身dog进化为秀恩爱dog撒~

Python恋爱小助手之必拿下

Ps——小故事

在我大四的时候,就有一个计算机的朋友用自己做的代码感动了一个数学系的女生。

就是下面这种。(这个爱心是词云图制作而成的!)也不知道为什么妹子放弃了全班40多位帅哥(没错,他们班就她一

个女生),而选择了头发日渐稀疏已经“六月怀胎”的我——朋友。

Python恋爱小助手之必拿下

今天,我就来教大家一下,如何用Python做二份特别的礼物送给自己的恋人。

当然了,如果还是单身的,也可以把这个作为表白神器,跟心爱的人表白。

懂编程的就看下面的吧!送上这份礼物之后,保证你明晚.....巫山云雨后,天气晚来秋啊!嘿嘿嘿嘿~

Python恋爱小助手之必拿下

Python恋爱小助手之必拿下

你是不是喜欢我?好巧,我也是吖~

Python恋爱小助手之必拿下

一、Part 1 表白篇—界面化表白小程序

1)环境安装

本文是基于Tkinter的界面化小程序,准备好相应的安装环境素材如下:

Python3、Pycharm、Pygame模块以及一些自带的就不说啦!


统一安装模块命令:pip install -i https://pypi.douban.com/simple/ +模块名

2)素材自备

这边小编准备的部分图片如下:

Python恋爱小助手之必拿下

一些背景音乐、字体当然也要准备好滴哈:

Python恋爱小助手之必拿下

Python恋爱小助手之必拿下

3)正式敲代码

3.1 先介绍下代码部分单词的作用


Function:
按钮类
Initial Args:
--x, y: 按钮左上角坐标
--width, height: 按钮宽高
--text: 按钮显示的文字
--fontpath: 字体路径
--fontsize: 字体大小
--fontcolor: 字体颜色
--bgcolors: 按钮背景颜色
--is_want_to_be_selected: 按钮是否想被玩家选中
--screensize: 软件屏幕大小
'''

3.2 配置一些界面窗口的小设置


# 窗口大小(width, height)
SCREENSIZE = (500, 260)
# 定义一些颜色
RED = (255, 0, 0)
BLACK = (0, 0, 0)
AZURE = (240, 255, 255)
WHITE = (255, 255, 255)
MISTYROSE = (255, 228, 225)
PALETURQUOISE = (175, 238, 238)
PAPAYAWHIP = (255, 239, 213)
LIGHTGRAY = (211, 211, 211)
GAINSBORO = (230, 230, 230)
WHITESMOKE = (245, 245, 245)
DARKGRAY = (169, 169, 169)
BLUE = (0, 0, 255)
DEEPSKYBLUE = (0, 191, 255)
SKYBLUE = (135, 206, 235)
LIGHTSKYBLUE = (135, 206, 250)
# 背景音乐路径
BGM_PATH = os.path.join(os.getcwd(), 'resources/music/bgm.mp3')
# 字体路径
FONT_PATH = os.path.join(os.getcwd(), 'resources/font/STXINGKA.TTF')
# 背景图片路径
BG_IMAGE_PATH = os.path.join(os.getcwd(), 'resources/images/01.jpg')
# ICON路径
ICON_IMAGE_PATH = os.path.join(os.getcwd(), 'resources/images/icon.png')

3.3 主函数


def main():
# 初始化
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE, 0, 32)
pygame.display.set_icon(pygame.image.load(cfg.ICON_IMAGE_PATH))
pygame.display.set_caption('你知道嘛?')
# 背景音乐
pygame.mixer.music.load(cfg.BGM_PATH)
pygame.mixer.music.play(-1, 30.0)
# biu爱心那个背景图片
bg_image = pygame.image.load(cfg.BG_IMAGE_PATH)
bg_image = pygame.transform.smoothscale(bg_image, (150, 150))
# 实例化两个按钮
button_yes = Button(x=20, y=cfg.SCREENSIZE[1]-70, width=120, height=35,
text='愿意', fontpath=cfg.FONT_PATH, fontsize=15, fontcolor=cfg.BLACK, edgecolor=cfg.SKYBLUE,
edgesize=2, bgcolors=[cfg.DARKGRAY, cfg.GAINSBORO], is_want_to_be_selected=True, screensize=cfg.SCREENSIZE)
button_no = Button(x=cfg.SCREENSIZE[0]-140, y=cfg.SCREENSIZE[1]-70, width=120, height=35,
  text='不愿意', fontpath=cfg.FONT_PATH, fontsize=15, fontcolor=cfg.BLACK, edgecolor=cfg.DARKGRAY,
  edgesize=1, bgcolors=[cfg.DARKGRAY, cfg.GAINSBORO], is_want_to_be_selected=False, screensize=cfg.SCREENSIZE)
# 是否点击了好呀按钮
is_agree = False
# 主循环
clock = pygame.time.Clock()
while True:
# --背景图片
screen.fill(cfg.WHITE)
screen.blit(bg_image, (cfg.SCREENSIZE[0]-bg_image.get_height(), 0))
# --鼠标事件捕获
for event in pygame.event.get():
if event.type == pygame.QUIT:
# ----没有点击好呀按钮之前不许退出程序
if is_agree:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN and event.button:
if button_yes.rect.collidepoint(pygame.mouse.get_pos()):
button_yes.is_selected = True
root = Tk()
root.withdraw()
messagebox.showinfo('', '永远爱你')
root.destroy()
is_agree = True
# --显示文字
showText(screen=screen, text='自从我们相遇的那一刻,', position=(40, 50),
fontpath=cfg.FONT_PATH, fontsize=25, fontcolor=cfg.BLACK, is_bold=False)
showText(screen=screen, text='你是我白天黑夜不落的星!', position=(40, 100),
fontpath=cfg.FONT_PATH, fontsize=25, fontcolor=cfg.BLACK, is_bold=True)
# --显示按钮
button_yes.draw(screen, pygame.mouse.get_pos())
button_no.draw(screen, pygame.mouse.get_pos())
# --刷新
pygame.display.update()
clock.tick(60)

4)效果图

运行代码之后——背景音乐一上来就有那个味儿了~嘿嘿 超浪漫,界面也很好看的吖——想要什么字体、界面可以自己设置修改优化的!

4.1 自从我们相遇的那一刻,你是我白天黑夜不落的星。 ——莱蒙托夫《乌黑的眼睛》

Python恋爱小助手之必拿下

4.2 我会不爱你吗?不爱你?不会,爱你就像爱生命。——王小波

Python恋爱小助手之必拿下

4.3 情侣超甜——甜度爆表啊!哈哈哈啊

Python恋爱小助手之必拿下

Python恋爱小助手之必拿下

二、Part 2 表白篇—字符画表白小程序

1)环境安装

相应的安装环境素材如下:

Python3、Pycharm、Pillow模块以及一些自带的就不说啦!


统一安装模块命令:pip install -i https://pypi.douban.com/simple/ +模块名

2)素材自备

这边小编准备的部分图片如下:

Python恋爱小助手之必拿下

3)  正式敲代码

3.1主要代码


#-*- coding=utf-8 -*-

from PIL import Image

IMG = '02.jpg'      #设置图片文件
WIDTH = 150     #设置字符画的宽
HEIGHT = 80     #设置字符画的高
OUTPUT = 'ym.txt'      #设置存放字符画的文本文件
ascii_char = list("我喜欢你")    #设置显示的字符集

#将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256):
   #alpha为透明度
   # 判断 alpha 值,为0表示全透明
   if alpha == 0:
       return ' '

# 获取字符集的长度,这里为 70
   length = len(ascii_char)
   # 将 RGB 值转为灰度值 gray,灰度值范围为 0-255
   gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

# 灰度值范围为 0-255,而字符集只有 70
   # 需要进行如下处理才能将灰度值映射到指定的字符上
   #防止当灰度值为255时,输出的第70个字符超出列表索引,所以需要将(255+1)
   unit = (255.0 + 1)/length

# 返回灰度值对应的字符
   return ascii_char[int(gray/unit)]

if __name__ == '__main__':

# 打开并调整图片的宽和高
   im = Image.open(IMG)
   im = im.resize((WIDTH,HEIGHT), Image.NEAREST)

# 初始化输出的字符串
   txt = ""

# 遍历图片中的每一行
   for i in range(HEIGHT):
       # 遍历该行中的每一列
       for j in range(WIDTH):
           # 将 (j,i) 坐标的 RGB 像素转为字符后添加到 txt 字符串
           txt += get_char(*im.getpixel((j,i)))
       # 遍历完一行后需要增加换行符
       txt += '\n'
   # 输出到屏幕
   print(txt)
   with open(OUTPUT,'w') as f:
       f.write(txt)

4)效果图

4.1 图跟文字选的不好,所以效果有点儿社会性死亡了!哈哈哈~尴尬的笑笑缓解一下,不要是去表白的结果变成分手了哈!

Python恋爱小助手之必拿下

4.2 这张图选择我估计看不出来是个人了!所以说——选择图片跟文字是有技巧的,只是我比较懒!

Python恋爱小助手之必拿下

来源:https://blog.csdn.net/weixin_55822277/article/details/120722479

标签:Python,恋爱,表白
0
投稿

猜你喜欢

  • Python基础语法(Python基础知识点)

    2021-03-04 11:10:34
  • ASP连接Access数据库和SQL server数据库的方法

    2007-08-22 13:16:00
  • 解决Pandas生成Excel时的sheet问题的方法总结

    2021-01-13 14:24:44
  • 纯numpy卷积神经网络实现手写数字识别的实践

    2023-11-08 10:44:50
  • response.setHeader()方法设置http文件头的值

    2010-03-11 22:43:00
  • python回调函数中使用多线程的方法

    2022-11-08 20:01:15
  • php 生成短网址原理及代码

    2023-10-23 05:04:25
  • 详解Python静态网页爬取获取高清壁纸

    2023-10-18 08:27:42
  • Python如何提取html中文本到txt

    2022-07-03 17:44:08
  • 5步让你的CSS样式表成功减肥

    2009-08-02 21:27:00
  • mysql中优化和修复数据库工具mysqlcheck详细介绍

    2024-01-23 21:53:38
  • WEB页面工具语言XML带来的好处

    2008-05-29 11:01:00
  • Python 如何实现访问者模式

    2021-08-10 20:49:53
  • python中使用 xlwt 操作excel的常见方法与问题

    2021-09-12 05:10:02
  • CMD命令操作MSSQL2005数据库(命令整理)

    2024-01-21 11:14:49
  • 解决python replace函数替换无效问题

    2022-05-20 18:51:57
  • python读取hdfs并返回dataframe教程

    2022-03-22 17:15:33
  • 详解Go语言中用 os/exec 执行命令的五种方法

    2024-05-28 15:21:51
  • 飞扬远程获取类Asp xmlHttp 源码

    2010-04-03 20:37:00
  • node.js中的fs.realpathSync方法使用说明

    2024-05-13 09:59:04
  • asp之家 网络编程 m.aspxhome.com