【Python表白系列】制作一个无法拒绝的表白界面(完整代码)

文章目录

  • 无法拒绝的表白界面
  • 环境需求
  • 完整代码
  • 详细分析
  • 系列文章

无法拒绝的表白界面

表白界面1
当点击“不要”时弹出
表白界面2
当点击“×”时弹出
表白界面3

环境需求

  • python3.11.4
  • PyCharm Community Edition 2023.2.5
  • pyinstaller6.2.0可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)

【注】

  • python环境搭建请见:https://want595.blog.csdn.net/article/details/134586653
  • pyinstaller使用教程见:https://want595.blog.csdn.net/article/details/134106807

完整代码

import tkinter as tk
import tkinter.messagebox
root = tk.Tk()
root.title('❤')
root.resizable(0, 0)
root.wm_attributes("-toolwindow", 1)
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
widths = 300
heights = 100
x = (screenwidth - widths) / 2
y = (screenheight - heights) / 2
root.geometry('%dx%d+%d+%d' % (widths, heights, x, y))  # 设置在屏幕中居中显示
tk.Label(root, text='亲爱的,做我女朋友好吗?', width=37, font=('宋体', 12)).place(x=0, y=10)def OK():  # 同意按钮root.destroy()# 同意后显示漂浮爱心def NO():  # 拒绝按钮,拒绝不会退出,必须同意才可以退出哦~tk.messagebox.showwarning('❤', '再给你一次机会!')def closeWindow():tk.messagebox.showwarning('❤', '逃避是没有用的哦')tk.Button(root, text='好哦', width=5, height=1, command=OK).place(x=80, y=50)
tk.Button(root, text='不要', width=5, height=1, command=NO).place(x=160, y=50)
root.protocol('WM_DELETE_WINDOW', closeWindow)  # 绑定退出事件
root.mainloop()

详细分析

这是一段使用Python的tkinter库实现的简单GUI程序,目的是用一个小窗口向用户求爱,请求对方成为自己的女朋友。

先介绍一下代码的基本框架:

  • 导入tkinter库
  • 创建一个tk对象,即窗口
  • 在窗口中添加一个Label和两个Button
  • 定义两个Button的回调函数
  • 调用mainloop()函数,开始显示窗口

下面我们来详细分析一下代码:

  1. 导入tkinter库

Python的tkinter库是一个方便易用的GUI库,用于创建窗口和各种GUI组件,如Label、Button、Entry等等。使用前需要先导入tkinter库。

import tkinter as tk
import tkinter.messagebox

其中tkinter库被导入并重命名为tk,这样可以更方便地调用其函数。

  1. 创建一个tk对象,即窗口

在程序中创建一个窗口对象:

root = tk.Tk()

其中root是窗口对象的名称,可以自己定义。这一行代码创建了一个名为root的窗口对象。

接下来为窗口设置标题、大小和位置:

root.title('❤')
root.resizable(0, 0)
root.wm_attributes("-toolwindow", 1)
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
widths = 300
heights = 100
x = (screenwidth - widths) / 2
y = (screenheight - heights) / 2
root.geometry('%dx%d+%d+%d' % (widths, heights, x, y))
  • 设置标题:使用title()函数可以设置窗口的标题,这里将标题设置为心形。
  • 设置大小和位置:使用geometry()函数可以设置窗口的大小和位置,这里将窗口设置为宽300,高100,并将窗口显示在屏幕中央。

其中设置窗口大小和位置的代码比较复杂,可以简单解释一下:

  • 获取当前屏幕的宽高:使用winfo_screenwidth()和winfo_screenheight()函数分别获取屏幕的宽和高。
  • 设置窗口的宽高:将窗口的宽设置为300,高设置为100。
  • 计算窗口的位置:通过计算得到窗口左上角的坐标(x,y),使得窗口在屏幕中间显示。

其他还设置了以下两行代码:

root.resizable(0, 0)
root.wm_attributes("-toolwindow", 1)
  • 禁止窗口大小可调:使用resizable()函数可以设置窗口是否可以改变大小,这里将其设置为不可改变。
  • 将窗口设置为工具窗口:使用wm_attributes()函数可以设置窗口的属性,这里将其设置为工具窗口,这样可以在任务栏中不显示窗口。
  1. 在窗口中添加一个Label和两个Button

在窗口中添加Label和Button:

tk.Label(root, text='亲爱的,做我女朋友好吗?', width=37, font=('宋体', 12)).place(x=0, y=10)
tk.Button(root, text='好哦', width=5, height=1, command=OK).place(x=80, y=50)
tk.Button(root, text='不要', width=5, height=1, command=NO).place(x=160, y=50)
  • 添加Label:使用Label()函数创建一个Label组件,其中设置文本内容为“亲爱的,做我女朋友好吗?”,设置宽度为37,字体大小为12,然后将其显示在窗口中,位置为(x,y)=(0,10)。
  • 添加Button:使用Button()函数创建两个Button组件,分别设置文本内容为“好哦”和“不要”,大小为5×1,设置回调函数为OK和NO,最后将它们分别显示在窗口中的位置(x,y)=(80,50)和(x,y)=(160,50)。
  1. 定义两个Button的回调函数

定义两个Button的回调函数:

def OK():  root.destroy()# 同意后显示漂浮爱心def NO():  tk.messagebox.showwarning('❤', '再给你一次机会!')def closeWindow():tk.messagebox.showwarning('❤', '逃避是没有用的哦')

这里定义了三个函数,分别是OK、NO、closeWindow。其中:

  • OK函数:当用户点击“好哦”按钮时,调用destroy()函数来关闭窗口,表示同意成为男友女友。此外,可以在这个函数中添加一些代码,比如显示漂浮的爱心。
  • NO函数:当用户点击“不要”按钮时,调用showwarning()函数显示一个弹窗,提示用户再给一次机会。注意,此时窗口不会关闭,必须同意才能退出。
  • closeWindow函数:当用户点击窗口右上角的关闭按钮时,调用showwarning()函数来弹出一个窗口,提示用户逃避是没有用的。
  1. 调用mainloop()函数,开始显示窗口

调用mainloop()函数,开始显示窗口并等待用户操作。

root.mainloop()

当用户点击“好哦”按钮时,窗口会关闭,程序结束。当用户点击“不要”按钮时,窗口不会关闭,继续等待用户操作。当用户点击窗口右上角的关闭按钮时,弹出提示框后,窗口不会关闭,继续等待用户操作。

这就是整个程序的代码和逻辑。虽然是一个简单的小例子,但是体现了tkinter库的基本用法,也比较有趣。

系列文章

Python表白系列文章目录直达链接
1无法拒绝的表白界面https://want595.blog.csdn.net/article/details/134744894
2满屏表白代码https://want595.blog.csdn.net/article/details/134744711
3跳动的爱心https://want595.blog.csdn.net/article/details/134744191
4漂浮的爱心https://want595.blog.csdn.net/article/details/134744929
5爱心光波https://want595.blog.csdn.net/article/details/134747365
6流星雨https://want595.blog.csdn.net/article/details/134747408
7玫瑰花https://want595.blog.csdn.net/article/details/134747447

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法

文章目录 .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法详细报错内容解决方案修改数据修改表修改字段 .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法 详细报错内容 System.NotSupportedException…

从图片或PDF文件识别表格提取内容的简单库img2table

img2table是一个基于OpenCV 图像处理的用于 PDF 和图像的表识别和提取 Python库。由于其设计基于神经网络的解决方案,提供了一种实用且更轻便的替代方案,尤其是在 CPU 上使用时。 该库的特点: 识别图像和PDF文件中的表格,包括在表…

富文本内容回显

<el-card><h7>正文内容</h7><template><div v-html"inputForm.bulletinData"></div></template></el-card> 通过 v-html 来回显数据

Robotframework自动化常见问题总结

Robotframework自动化新手常见问题总结 1. 经常有人问这个元素找不到&#xff0c;一般先排除这两个地方&#xff0c;再自己找找 A&#xff1a;是否等待了足够的时间让元素加载 (增加sleep xx, wait Until xxx) B: 仔细查查&#xff0c;这个元素是否进入到另一个frame了 (sel…

Leetcode—392.判断子序列【简单】

2023每日刷题&#xff08;四十七&#xff09; Leetcode—392.判断子序列 双指针实现代码 bool isSubsequence(char* s, char* t) {int lens strlen(s);int lent strlen(t);int left 0, right 0;if(lens 0) {return true;}while(right < lent) {if(t[right] s[left])…

用户反馈组件实现(Vue3+ElementPlus)含图片拖拽上传

用户反馈组件实现&#xff08;Vue3ElementPlus&#xff09;含图片拖拽上传 1. 页面效果1.1 正常展示1.2 鼠标悬浮1.3 表单 2. 代码部分1.2 html、ts1.2 less部分 3. 编码过程遇到的问题 1. 页面效果 1.1 正常展示 1.2 鼠标悬浮 1.3 表单 2. 代码部分 1.2 html、ts <templ…

Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

快照读通过MVCC解决不可重复读当前读通过间隙锁解决幻读

简介 Multi-Version Concurrency Control 多版本并发控制&#xff0c;MVCC 是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff1b;在编程语言中实现事务内存。 *往期知识不做重点 事务具有4个特征,分别是原子性、一致性、隔…

骨传导会损伤听力吗?戴哪种耳机不伤耳朵?

使用骨传导耳机不会损伤听力&#xff0c;反而还能在一定程度上保护听力&#xff01; 骨传导耳机最大的特点是&#xff0c;声波不经过外耳道和骨膜中的空气进行传播&#xff0c;而是直接将人体骨骼结构作为传声介质来进行传播。 在使用骨传导耳机时&#xff0c;骨传导耳机的声源…

Python标准库math【侯小啾python领航班系列(十六)】

Python标准库math【侯小啾python领航班系列(十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

SpringCloud_Gateway服务网关

文章目录 一、SpringCloudGateway服务网关概论1、SpringCloudGateway服务网关概论2、SpringCloudGateway的三大核心概念 二、SpringCloudGateway的路由及断言1、子模块项目SpringCloudGateway的搭建2、SpringCloudGateway_Java API构建路由3、SpringCloudGateway的动态路由功能…

学生备考护眼灯哪个牌子好?值得入手的护眼台灯推荐

护眼台灯作为这几年人们很关注的电器产品&#xff0c;家里有孩子或者是经常面对电子设备的人士&#xff0c;相信都会对其有所了解并且购买了护眼台灯&#xff0c;但是还有些家长对护眼台灯的认知不够深&#xff0c;以至于还没有给孩子安排上护眼台灯&#xff0c;还在疑惑护眼台…

FlowJo软件的简单介绍 掌控流式细胞分析的科技巨匠 FlowJo10

FlowJo 10 for Mac是一款强大的流式细胞数据分析软件&#xff0c;具有以下功能&#xff1a; 数据导入与预处理&#xff1a;FlowJo 10可以轻松导入各种类型的流式细胞数据&#xff0c;并对数据进行预处理&#xff0c;包括去噪、背景校正等&#xff0c;以确保数据的准确性和可靠…

小小窗户,在风水中有大大的作用

风水&#xff0c;不是迷信&#xff0c;是环境科学&#xff0c;是地磁学。过去大户人家&#xff0c;官府都是很注重风水的。现在&#xff0c;越是往社会上层越是注重风水。在实际的家居风水之中&#xff0c;要想生旺气场&#xff0c;增加财运&#xff0c;风水纳气一定要充足。 自…

CCC联盟数字车钥匙(七)——BLE连接流程

本文接上一篇CCC数字钥匙BLE概述&#xff0c;介绍BLE中相关连接流程的实现。 2、BLE流程 2.1 所有者配对连接建立 CCC中使用Bluetooth OOB&#xff08;Out of Band, 带外&#xff09;配对完成所有者配对、连接建立的流程。BLE设置分为以下两个子部分&#xff1a; BLE链路层连…

UI自动化Selenium find_elements和find_element的区别

# 如果获取的element是list&#xff0c;那么需要用find_elements方法&#xff1b;此方法会返回list&#xff0c;然后使用len() 方法&#xff0c;计算对象的个数&#xff1b; # find_element方法返回的不是list对象&#xff0c;所以导致没办法计算对象个数 # 1.返回值类型不同…

oops-framework框架 之 初始了解(一)

引擎&#xff1a;CocosCreator 环境&#xff1a; Mac Gitee: oops-framework 简介 oops-framework是由作者dgflash编写&#xff0c;基于CocosCreator 3.x而实现的开源框架。 该框架以插件形式存在&#xff0c;主要目的是为了降低与项目的耦合&#xff0c;并且通过插件内部的…

LeetCode | 100. 相同的树

LeetCode | 100. 相同的树 OJ链接 判断两个节点是否等于空&#xff0c;两个都等于空就直接返回true如果一个等于空&#xff0c;另一个不等于空&#xff0c;说明false然后再判断两个树的值是否相等最后递归p的左&#xff0c;q的左&#xff0c;p的右&#xff0c;q的右 bool isS…

仿真的整体框架和类图设计

之前的写的模拟代码没有模块&#xff0c;没有对象&#xff0c;写的逻辑结构也很混乱。我花了些时间进行整理&#xff0c;首先所有的类如下图 在管理类中有统一的管理类的接口 &#xff0c;提供所有管理类的虚拟初始化和关闭方法 然后事件的管理类 我希望在这个类中管理所有的脉…

K7系列FPGA多重启动(Multiboot)

Xilinx 家的 FPGA 支持多重启动功能&#xff08;Multiboot&#xff09;&#xff0c;即可以从多个 bin 文件中进行选择性加载&#xff0c;从而实现对系统的动态更新&#xff0c;或系统功能的动态调整。 这一过程可以通过嵌入在 bit 文件里的 IPROG 命令实现上电后的自动加载。而…