程序员表白

开发工具

Python版本: 3.6.4

相关模块:

requests模块;

argparse模块;

pyquery模块;

jieba模块;

pyecharts模块;

wordcloud模块;

以及一些Python自带的模块。

原理简介

具体而言,首先我们来定义一个按钮类,其功能是可以根据初始化参数生成一个界面上按钮,且这个按钮是否可以被点击到也由传入的初始化参数决定,具体而言代码实现如下:

'''
Function:按钮类
Initial Args:--x, y: 按钮左上角坐标--width, height: 按钮宽高--text: 按钮显示的文字--fontpath: 字体路径--fontsize: 字体大小--fontcolor: 字体颜色--bgcolors: 按钮背景颜色--is_want_to_be_selected: 按钮是否想被玩家选中--screensize: 软件屏幕大小
'''
class Button(pygame.sprite.Sprite):def __init__(self, x, y, width, height, text, fontpath, fontsize, fontcolor, bgcolors, edgecolor, edgesize=1, is_want_to_be_selected=True, screensize=None, **kwargs):pygame.sprite.Sprite.__init__(self)self.rect = pygame.Rect(x, y, width, height)self.text = textself.font = pygame.font.Font(fontpath, fontsize)self.fontcolor = fontcolorself.bgcolors = bgcolorsself.edgecolor = edgecolorself.edgesize = edgesizeself.is_want_tobe_selected = is_want_to_be_selectedself.screensize = screensize'''自动根据各种情况将按钮绑定到屏幕'''def draw(self, screen, mouse_pos):# 鼠标在按钮范围内if self.rect.collidepoint(mouse_pos):# --不想被选中if not self.is_want_tobe_selected:while self.rect.collidepoint(mouse_pos):self.rect.left, self.rect.top = random.randint(0, self.screensize[0]-self.rect.width), random.randint(0, self.screensize[1]-self.rect.height)pygame.draw.rect(screen, self.bgcolors[0], self.rect, 0)pygame.draw.rect(screen, self.edgecolor, self.rect, self.edgesize)# 鼠标不在按钮范围内else:pygame.draw.rect(screen, self.bgcolors[1], self.rect, 0)pygame.draw.rect(screen, self.edgecolor, self.rect, self.edgesize)text_render = self.font.render(self.text, True, self.fontcolor)fontsize = self.font.size(self.text)screen.blit(text_render, (self.rect.x+(self.rect.width-fontsize[0])/2, self.rect.y+(self.rect.height-fontsize[1])/2))

其实就是看看鼠标的当前位置有没有在按钮所在的范围内,如果在且设置的不让用户可以点击到该按钮,就自动地移动按钮的位置,使鼠标位置不在移动后的按钮所在的范围内。
然后写个主循环,把界面大小,配色,布局啥的弄的稍微走心一点:

'''主函数'''
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 = Trueroot = 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)

ps:记得设置个flag,对方没点击“好呀”按钮之前,不要让对方可以关闭这个小程序就好啦~

文章到这里就结束了,感谢你的观看,下篇文章python教程分享Python网络安全系列

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

❤️七夕佳节,用Python制作表白神器,程序员也应该拥有爱情!【附源码,建议收藏】❤️相关推荐

  1. python编译出来的程序员_Windows下编译Python2.7源码

    本文开始一个系列文章,深入理解Python源码,算是阅读<Python源码剖析>一书的读书笔记,是一项长期进行的工作.一共分三个部分:Python对象模型,Python虚拟机,Python ...

  2. 【Golang项目实战】手把手教你写一个备忘录程序|附源码——建议收藏

    博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作.目前在学习和分享:数据结构.Go,Java等相关知识. 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标:写好专栏的每一篇文 ...

  3. Marp之制作PPT神器(程序员的定制版PPT)

    Marp之制作PPT神器(程序员的定制版PPT) 01. 何为Marp? Marp源于Electron,就是一款Markdown演示编写器. 02. 简单了解Marp作用 主要采用CoffeeScri ...

  4. HTML期末大作业~简单的程序员个人博客网站模板源码(HTML+CSS)~个人主页博客web网页设计制作~HTML简单个人网页制作~Web大学生网页成品...

    HTML期末大作业~ 简单的程序员个人博客网站模板源码(HTML+CSS)~学生HTML个人网页作业作品下载 ~个人主页博客网页设计制作 ~大学生个人网站作业模板 ~简单个人网页制作 临近期末, 你还 ...

  5. 有感而发:程序员到底要不要阅读框架源码?

    写在前面 最近正在写[高并发专题]的文章,其中,在[高并发专题]中,有不少是分析源码的文章,很多读者留言说阅读源码比较枯燥!问我程序员会使用框架了,会进行CRUD了,是否真的有必要阅读框架源码?! 对 ...

  6. u盘锁电脑_程序员用U盘偷公司源码被抓;Rust 语言发布 5 周年

    (给技术最前线加星标,每天看技术热点) 综合整理:技术最前线(ID:TopITNews)参考:程序员的那些事.开源中国.solidot.cnBeta.腾讯科技等 0.程序员用U盘偷公司源码被判刑 20 ...

  7. 使用python多线程获取代理IP(代理IP池,附源码)

    @[TOC]使用python多线程获取代理IP(代理IP池,附源码) 代理IP池 都说现在是大数据的时代,大多数的厂商会特别的注重自己家的数据安全问题,但同时,也有着许多的行业是需要大数据来做支撑的, ...

  8. python制作表白神器_程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式.让程序员的恋人们感受一下IT人的浪漫. 一.词云制作 首先咱们可以用之前介绍过的wordcould包制作词云. ...

  9. java写一个简单的浪漫代码_程序员的浪漫弹窗表白,圣诞节给Ta惊喜吧(附源码,简单易学哦)...

    不要以为程序员都是木讷的,浪漫起来也会让很多妹子心动的.而程序员的表白方式也很不一般,通过一堆代码,无限释放浪漫.今天教给大家通过改写脚本语言,利用弹窗可充分自由发挥,用来表白或者恶搞都是不错的选择. ...

  10. python 开发视频播放网站_python开发微电影视频网站教程附源码

    做为一个合格的Pythoner,只掌握一个框架是不够,如果你有过其它Python框架(例如django)的使用经验,对比不同框架的特性来学习,你将收获更多 当前信息若含有黄赌毒等违法违规不良内容,请点 ...

最新文章

  1. MVVM架构~knockoutjs系列之验证成功提示显示
  2. Java并发编程-并发工具包java.util.concurrent使用指南
  3. Logstash 参考指南(使用Filebeat Modules配置示例)
  4. 由一次WCF项目的需求扩展想到的
  5. Oracle备份standby,Oracle 11g 利用泠备份恢复standby库
  6. Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数
  7. 机会难得 | 这家上市公司终于招人了
  8. 仓库货位 mysql_Max(TM)财务进销存管理系统 V1.1.12 MySQL网络版
  9. MyEclipse 8.6VSS1.6.2 插件安装
  10. 8086CPU标志位
  11. 移动硬盘根目录里的msdia80.dll文件
  12. 手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技
  13. OpenCV图像特征SIFT
  14. HPD2368计算机上没有打印机,HPD2368打印机显示堵纸了,打印不了, – 手机爱问
  15. 淘宝/天猫按关键字搜索淘宝商品
  16. 龙格现象 图像对比及Python代码实现
  17. 众筹倒闭始末:他8岁学编程14岁开公司,40岁败在智能硬件
  18. 四十岁是科学家的黄金年龄 我还有机会
  19. 如何读取lansee捕获的数据包
  20. ssm+微信小程序基于微信小程序的社区老人健康管理服务系统的设计与实现毕业设计源码011513

热门文章

  1. html鼠标移入移除事件,js鼠标移入移出事件样例
  2. 复旦EMBA邀分众传媒陈岩,谈科技在营销细分领域的应用
  3. Java API在线中文文档——http://itmyhome.com/java-api/index.html?overview-summary.html
  4. 视觉SLAM——二维三维几何、三维空间刚体变换
  5. jenkins pipeline_DevOps编程操练:用Jenkins流水线建立代码质量预警机制
  6. JVM HeapSize Permsize
  7. IP 网关 端口 网段 子网掩码 概念 区别
  8. uint16 累加_uint8和uint16 是什么数据类型?
  9. python爬取图虫网图片
  10. windows下编译opencv+opencv_contrid的Android版本