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库的基本用法,也比较有趣。

    系列文章

    序号 文章目录 直达链接
    520系列
    1 无法拒绝的表白界面 https://want595.blog.csdn.net/article/details/134744894
    2 满屏飘字表白代码 https://want595.blog.csdn.net/article/details/135037388
    3 无限弹窗表白代码 https://want595.blog.csdn.net/article/details/134744711
    4 李峋同款可写字版跳动的爱心 https://want595.blog.csdn.net/article/details/134744191
    5 流星雨 https://want595.blog.csdn.net/article/details/134747408
    6 漂浮爱心 https://want595.blog.csdn.net/article/details/134744929
    7 爱心光波 https://want595.blog.csdn.net/article/details/134747365
    8 玫瑰花 https://want595.blog.csdn.net/article/details/134747447
    9 跳动的爱心(双爱心版) https://want595.blog.csdn.net/article/details/127116822
    节日系列
    1 新春/跨年 烟花秀(2022) https://want595.blog.csdn.net/article/details/128727394
    烟花秀(2023) https://want595.blog.csdn.net/article/details/135042880
    粒子烟花 https://want595.blog.csdn.net/article/details/136029420
    2 圣诞节 圣诞礼物 https://want595.blog.csdn.net/article/details/135336583
    圣诞树(2022) https://want595.blog.csdn.net/article/details/128428985
    绿色圣诞树(2023) https://want595.blog.csdn.net/article/details/135048607
    粉色圣诞树(2023) https://want595.blog.csdn.net/article/details/135043042
    3 冬至 大雪纷飞 https://want595.blog.csdn.net/article/details/128806017
    4 生日 生日蛋糕 https://want595.blog.csdn.net/article/details/128739755
    5 儿童节 五彩气球 https://want595.blog.csdn.net/article/details/128741043
    6 国庆节 国庆祝福 https://want595.blog.csdn.net/article/details/128740923
    7 万圣节 万圣礼物 https://want595.blog.csdn.net/article/details/128734395
    8 愚人节 愚人代码 https://want595.blog.csdn.net/article/details/128696990
    9 中秋节 浪漫星空 https://want595.blog.csdn.net/article/details/128737284
    10 植树节 樱花树 https://want595.blog.csdn.net/article/details/128700178
    动漫系列
    1 名侦探柯南系列 柯南 https://want595.blog.csdn.net/article/details/134777613
    2 喜羊羊与灰太狼系列 喜羊羊 https://want595.blog.csdn.net/article/details/134778583
    懒羊羊 https://want595.blog.csdn.net/article/details/134847642
    灰太狼 https://want595.blog.csdn.net/article/details/135335303
    小灰灰 https://want595.blog.csdn.net/article/details/135335445
    小香香 https://want595.blog.csdn.net/article/details/135056783
    3 海绵宝宝系列 海绵宝宝 https://want595.blog.csdn.net/article/details/134847364
    4 哆啦A梦系列 哆啦A梦 https://want595.blog.csdn.net/article/details/135037884
    5 HelloKitty系列 hellokitty https://want595.blog.csdn.net/article/details/135337732
    6 Tom&Jerry系列 Tom&Jerry https://want595.blog.csdn.net/article/details/135337775
    7 草莓熊系列 草莓熊 https://want595.blog.csdn.net/article/details/135337832
    8 皮卡丘系列 迷你皮卡丘 https://want595.blog.csdn.net/article/details/135337911
    高级皮卡丘 https://want595.blog.csdn.net/article/details/135337937
    豪华皮卡丘 https://want595.blog.csdn.net/article/details/135337947
    9 猪猪侠系列 猪猪侠 https://want595.blog.csdn.net/article/details/136340111
    10 超级英雄系列 蜘蛛侠 https://want595.blog.csdn.net/article/details/129080659
    炫酷系列
    1   一闪一闪亮星星系列 张万森下雪了 https://want595.blog.csdn.net/article/details/135336915
    一闪一闪亮星星 https://want595.blog.csdn.net/article/details/135337049
    2 代码雨 https://want595.blog.csdn.net/article/details/135054341
    3 七彩花朵 https://want595.blog.csdn.net/article/details/135056670
    4 3D星空 https://want595.blog.csdn.net/article/details/135056516
    5 金榜题名 https://want595.blog.csdn.net/article/details/135056150
    6 满天星 https://want595.blog.csdn.net/article/details/135056305
    ……

    写在后面

    我是一只有趣的兔子,感谢你的喜欢!

    作者:Want595

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python编写无法拒绝的表白界面(附完整代码)

    发表回复