程序员

有趣python小程序系列之二

作者:admin 2021-08-06 我要评论

文章目录 前言 一、关不掉的窗口 二、代码部分 1.导入所需的库 2.生成主窗口 3.生成提问、加载图片 4.生成按钮 5.定义点击按钮时的响应函数 6.主函数部分 三、结...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)


前言

没想到那么多人关注阅读有趣系列之一飘落的银杏。看来大家更喜欢有趣的东西(学习这种东西没人看,哈哈哈哈)。那接着更有趣系列第二篇,如果看的人多的话还会继续更新这个系列,没人的话我就继续整理笔记吧 ~

一、关不掉的窗口

当你遇到某个喜欢妹子,不知道如何表达自己的好感时,可以给她发个小程序,让她选择是否喜欢你~把“不喜欢”这个按钮焊死,只有“喜欢”你才能关闭程序,强行达成共识,就可以抱得美人归了。
纯属虚构,请勿实验,被拉黑了不要找我
本篇主要是利用python中的tkinter库来实现。

二、代码部分

1.导入所需的库

import tkinter as tk
from PIL import ImageTk
from tkinter import messagebox
from tkinter import *
import time

之所以导入time,是为了防止你被女神直接拉黑。

2.生成主窗口

可以根据后面加载的图片选择窗口的大小,窗口的文字可以根据自己的想法更改。

root = tk.Tk()  #新建窗口
root.title('嘘~我喜欢你呀') #窗口名字
root.geometry('390x350+500+220')  #窗口,385x400是大小,第1个加号是距离屏幕左边的宽,第2个加号是距离屏幕顶部的高。
root.mainloop() #保持窗口

在这里插入图片描述

3.生成提问、加载图片

效果如下所示,文字和颜色我都随意选的,你们可以根据注释进行更改。图片也是我随意选取的一张图,你们可以自己选择图片,需要注意的是需要把图片放入程序所在文件夹,在程序中更改加载图片的名字就行。Tips:图片大小的更改需要配合2.2生成窗口的大小,否则图片会显示不完全。

l1 = tk.Label(root, text='问你一个问题呀', font=('微软雅黑', 14), fg='red' )#第一行第一句话,可以根据自己的需要调整字体大小和想写的话
l1.grid()
l2 = tk.Label(root, text='你喜欢我吗?', font=('微软雅黑', 25), fg='blue') #第二行第一句话,可以根据自己的需要调整字体大小和想写的话
l2.grid(row=1, column=1, sticky=tk.E)
bm = ImageTk.PhotoImage(file='./test.jpg')  ##加载图片,记得把图片放到程序运行的文件夹
l3 = tk.Label(root, image=bm)
l3.grid(row=2, columnspan=2)

在这里插入图片描述

4.生成按钮

这里生成的按钮是不带功能的,需要点击带功能的话,需要加入command,会在下一节中提到,所以如果在复制代码时记得别忘了在代码中加入command = 你命名的函数,例如:

b2 = tk.Button(root, text='不喜欢', width=4, height=1, command=nolove)  #加入“不喜欢”的按钮和点击的动作

Tips:可以把“不喜欢”的按钮设置的小一点。

b1 = tk.Button(root, text='喜欢', width=18, height=2) #加入“喜欢”的按钮和点击的动作
b1.grid(row=3, column=0, sticky=tk.W)
b2 = tk.Button(root, text='不喜欢', width=4, height=1)  #加入“不喜欢”的按钮和点击的动作
b2.grid(row=3, column=3, sticky=tk.E)

在这里插入图片描述

5.定义点击按钮时的响应函数

上一节只是生成了按钮,但不带点击响应功能,这一节我们定义一些响应函数,就可以做到交互了。
可以注意到我在 love()方法中加入了一个 if 判断,因为我把关闭的按键都写死了,窗口会一直关不掉,会越弹越多,只有通过任务管理器关闭,不会任务管理器的小姐姐就只能看着窗口越点越多,然后越想越气,把你拉黑。加入一个time库,再利用if判断,当窗口运行时间达到你设定的值时,点击喜欢即可关闭程序,单位是s,我这里设定的是60s后点击“喜欢”即可关闭程序。

def Love():   #定义点击“喜欢”时的动作
    love = Toplevel(root)
    love.geometry('300x150+240+200')
    love.title('好巧啊,我也是')
    label = Label(love, text='好巧,我也是', font=('楷体',15))
    label.pack()
    label1 = Label(love, text='留个电话可以吗', font=('楷体', 10))
    label1.pack()
    entry = Entry(love,font=('楷体', 15))
    entry.pack()
    btn = Button(love, text = '确定', width=10, height=2, command=Sure)
    btn.pack()
    love.protocol("WM_DELETE_WINDOW", closelove)
    if time.time() - start > 60:  #设定一个时间,超过多少秒以后,点击”喜欢“可关闭
        closeall()

def Sure():
    sure = Toplevel(root)
    sure.geometry('300x150+240+200')
    sure.title('我不信')
    label = Label(sure, text='除非你现在给我打电话', font=('楷体', 15))
    label.pack()
    label = Label(sure, text='5201314', font=('楷体', 15))
    label.pack()
    btn = Button(sure, text='好的', width=10, height=2, command=clicksure)
    btn.pack()
    sure.protocol("WM_DELETE_WINDOW", closelove)



def nolove():  #定义点击“不喜欢”时的动作
    no_love = Toplevel(root)
    no_love.geometry('300x100+250+200')
    no_love.title('你肯定是骗我的')
    label = Label(no_love, text='再考虑考虑呗', font=('楷体',25))
    label.pack()
    btn = Button(no_love, text='好的', width=10, height=2, command=no_love.destroy)
    btn.pack()
    no_love.protocol("WM_DELETE_WINDOW", closenolve)

def closeroot():  #定义点击关闭窗口的动作
   messagebox.showinfo(title='警告', message='不许关闭,好好回答')
   return

def closeall():  #定义关闭所有的方法
    root.destroy()

def closelove():  #定义点击关闭喜欢时的动作
    messagebox.showinfo('不再考虑一下嘛', message='再考虑一下吧')
    return

def closenolve():
    nolove()

def clicksure():  #定义点击确定打电话时的相应
    messagebox.showinfo('哼,你又骗我', message='我还没收到电话')
    return

6.主函数部分

再加入第5节的响应函数即可构成完整的程序。

if __name__ == '__main__':
    start = time.time()
    root = tk.Tk()  #新建窗口
    root.title('嘘~我喜欢你呀') #窗口名字
    root.geometry('390x350+500+220')  #窗口,385x400是大小,第1个加号是距离屏幕左边的宽,第2个加号是距离屏幕顶部的高。
    root.protocol("WM_DELETE_WINDOW", closeroot)  #使窗口无法关闭

    l1 = tk.Label(root, text='问你一个问题呀', font=('微软雅黑', 14), fg='red' )#第一行第一句话,可以根据自己的需要调整字体大小和想写的话
    l1.grid()
    l2 = tk.Label(root, text='你喜欢我吗?', font=('微软雅黑', 25), fg='blue') #第二行第一句话,可以根据自己的需要调整字体大小和想写的话
    l2.grid(row=1, column=1, sticky=tk.E)
    bm = ImageTk.PhotoImage(file='./test.jpg')  ##加载图片,记得把图片放到程序运行的文件夹
    l3 = tk.Label(root, image=bm)
    l3.grid(row=2, columnspan=2)
    b1 = tk.Button(root, text='喜欢', width=18, height=2, command=Love) #加入“喜欢”的按钮和点击的动作
    b1.grid(row=3, column=0, sticky=tk.W)
    b2 = tk.Button(root, text='不喜欢', width=4, height=1, command=nolove)  #加入“不喜欢”的按钮和点击的动作
    b2.grid(row=3, column=3, sticky=tk.E)

    root.mainloop()    #保持窗口

三、结果展示

运行程序后,点击不同按钮有不同响应,但无论如何交互都无法关掉程序,只能通过任务管理器或者等到了你设置的时间后,点击“喜欢”才能关闭程序。
学会了吗~赶紧写个程序打包发给你喜欢的妹子吧。Tips:拉黑了别找我(不会有人还不会打包成exe文件吧,不会吧不会吧,开个玩笑,不会的可以评论区留言)
在这里插入图片描述
以上,就是全部内容了,虽然简单,但是可以发挥的空间还有很多,比如可以再多定义几个互动动作,达到循环套外的效果,我这里只是简单的加了一些互动,大家可以发挥自己的想象力,继续多加点功能。

在这里插入图片描述

有一个需要特别提一下的就是,留个电话下面的文本框输入,后续没有再定义函数,并不能返回给我们,但其实我们可以再加入一部分实现对方输入号码点击确认后,将输入的内容发送到我们邮箱(前提对方联网了),如果需要的人多的话后续可以再 写一篇如何将输入内容发送到邮箱。

完整代码后续会上传到github。
已上传:https://github.com/sw1122/interesting-PY-projects.git


系列之三预告:“颜值打分”

;原文链接:https://blog.csdn.net/weixin_52855810/article/details/115816723

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 有趣python小程序系列之二

    有趣python小程序系列之二

  • 2021第十二届蓝桥杯省赛 python A组 题

    2021第十二届蓝桥杯省赛 python A组 题

  • Python异常的这些知识点你都get到了吗

    Python异常的这些知识点你都get到了吗

  • Python128道面试题及答案详解,爆肝熬

    Python128道面试题及答案详解,爆肝熬

腾讯云代理商
海外云服务器