【兄弟反目成仇系列】:我只是写了一个爆炸信息窗口脚本,好兄弟追了我几条街~

文章目录

  • ✨ 真的来咯~
  • 💥爆炸信息窗口
    • 💡设计思路
      • 🔑模块准备
    • ⚠️删除好友警告⚠️
    • 源代码
  • ❓这时你可能会问
    • 👀 批量获取表情包
  • 🛀结束语

专栏
Python零基础入门篇🔥
Python网络蜘蛛🔥
Python数据分析
Django基础入门宝典🔥
小玩意儿🔥
Web前端学习
tkinter学习笔记
Excel自动化处理

✨ 真的来咯~

📢Hello!大家好,有好几天没有跟大家见面咯~不知道大家是否在等待《小玩意儿》专栏的更新呢😉
上一篇的文章👉【老师见打系列】:我只是写了一个自动回复讨论的脚本~

感觉挺受大伙的喜欢的呢,非常感谢各位兄弟给哥们顶上热榜💪,你们的支持就是我更新的动力❗️
所以这几天我就在想是否继续往【老师见打系列】更新文章,想出一些能让”老师见打“的idear,当然,我并不是要故意惹老师生气的哈……

在这里插入图片描述

直到前天,突然想写点什么,于是打开了pycharm,当我正在想着还有什么好的idear的时候,突然看到了左下角的一个py文件,”爆炸信息.py“⁉️我啥时候写的?那时的我一脸懵逼的看着文件里的代码,脑海里没有任何有关于它的记忆,不会是哥们梦游的时候给敲的吧……👀
在这里插入图片描述

仔细把代码看了个遍,突然脑海里才回想起在某年某月某日闲着没事干瞎写了这么一个代码😂,当我再次运行的时候,弹出了一个在我看来丑……呃呃呃那个……界面不太好看的窗口,于是点击窗口发送信息……欸呀我滴妈!!!这这这,运行个啥,代码太短,功能太少,界面还丑八怪咿呀咿呀~
在这里插入图片描述
说时迟那时快,突然冒出一个idear💡,为啥不把这个代码完善一下呢?搞个好看整洁一点的界面,到时候再写一篇文章,文章名我都想好了,你看那标题,起得这么熟练!咱们说干就干💪

于是哥们又挺着千年老腰,花了两三个小时的时间敲出一个还算不错的代码,用了一下,效果很好,我兄弟把我好友给删了……
在这里插入图片描述

开个玩笑😜好了,具体实现效果如何,请各位看官往下看👇

💥爆炸信息窗口

适当娱乐,请勿打扰他人正常生活哦😄


💡设计思路

我是这样想的,如果只简单的写一个单一信息发送就太无趣了,于是我就像每次得发不同的话,那才有意思,于是就想到了txt文件,但是,只有文字是不是效果不强,于是想到了下最流行的交流方式:表情包,诶~这就齐了(当然各位还有其他的idear可以在评论区里评论哈😜)

🔑模块准备

  • tkinter?不行,窗口界面差点意思,那就用 ttkbootstrap模块,ttkbootstrap 是一个基于 tkinter 的界面美化库,使用这个工具可以开发出类似前端 bootstrap 风格的 tkinter 桌面程序,但是还是得用到tkinter中的文件读取函数
  • pynput模块,pynput是一个监听、操作键盘鼠标库,主要用来实现消息的发送,咱们的招数能不能放出去就靠它了
  • time模块,time用来控制放招的间隔,咱们得讲究攻守进退呀!
  • ctypes模块,
  • os模块,主要用来查找文件,配合ttkbootstrap,擦出大火花💥
  • PIL模块,可以叫它图像处理工具包,用来读取表情包
  • win32con模块,此模块与pywin32配合使用,模块中定义了Windows下关于图形操作的API
  • win32clipboard模块,它的功能主要有剪切中文、图片等信息,表情包能不能发出去就靠它了👈
  • pyautogui模块,主要用来控制按下键盘的Ctrl+V键,相信各位对Ctrl C 和 Ctrl V的操作相当之熟练了吧😁

⚠️删除好友警告⚠️

先给大家开一下演示结果,带不带劲
🚦 以下高能,娱乐有度❗️ 请勿频繁使用 ❗️ 删除好友警告⚠️

  • 第一式:只说一句☝️
    在这里插入图片描述

  • 第二式:唐僧念经👴(发送txt文件中的内容)
    在这里插入图片描述

  • 第三式:不说了,扔图😈(发送表情包)
    在这里插入图片描述

源代码

from tkinter import filedialog, Tk, Label
import ttkbootstrap as tk
from ttkbootstrap.constants import *
from pynput.keyboard import Key, Controller as key
from pynput.mouse import Button as Bu, Controller as mouse_el
import time
from ctypes import *
import os
from PIL import Image
import win32con, win32clipboard
import pyautogui"""
============= 窗口设计 ===========
"""
class Explosion_window(tk.Frame):# master等待接收根窗口对象,app等待接收自定义的模块def __init__(self, master=None, app=None):tk.Frame.__init__(self, master)self.master = masterself.pack()# 调用在根窗口创建组件的函数self.createWidget()def createWidget(self):tk.Label(self, text='IT工藤新一 爆炸信息窗口', font=('华文行楷', 25)).grid(row=0, column=0, pady=10)tk.Button(self, text='第一式:我只说一句', command=self.first_formula, bootstyle=SUCCESS).grid(row=1, column=0, pady=10)tk.Button(self, text='第二式:唐僧念经', command=self.second_formula, bootstyle=SUCCESS).grid(row=2, column=0, pady=10)tk.Button(self, text='第三式:不说了,扔图', command=self.three_formula, bootstyle=SUCCESS).grid(row=3, column=0, pady=10)# 第一式def first_formula(self):root_1 = tk.Toplevel() # 实例化一个顶级类窗口root_1.title('第一式')root_1.geometry('500x300')tk.Label(root_1, text='第一式:我只说一句', font=('华文行楷', 22)).grid(row=0, column=1, pady=10)tk.Label(root_1, text='招数内容:', font=('华文行楷', 15)).grid(row=1,column=0)tk.Label(root_1, text='放招次数:', font=('华文行楷', 15)).grid(row=2, column=0)tk.Label(root_1, text='放招间隔(s):', font=('华文行楷', 15)).grid(row=3, column=0)words = tk.StringVar() # 接收用户输入的文字times = tk.IntVar() # 结束放招次数time_interval = tk.IntVar() # 接收放招间隔tk.Entry(root_1, textvariable=words, font=('黑体', 15)).grid(row=1, column=1, pady=10)tk.Entry(root_1, textvariable=times, font=('黑体', 15)).grid(row=2, column=1, pady=10)tk.Entry(root_1, textvariable=time_interval, font=('黑体', 15)).grid(row=3, column=1, pady=10)tk.Button(root_1, text='确定放招', command=lambda: app.first_move(words.get(), times.get(), time_interval.get(), root_1), bootstyle=(SUCCESS, OUTLINE)).grid(row=4, column=1)root_1.mainloop()def second_formula(self):formula = 2self.second_three_formula(formula) # 调用放招函数def three_formula(self):formula = 3self.second_three_formula(formula)  # 调用放招函数def second_three_formula(self, formula): # 第二、第三式的窗口一样,为了提高代码的重用性,用选择判断语句进行操作root_2 = tk.Toplevel()if formula == 2:title1 = '第二式:唐僧念经'text1 = '选择txt文件'tk.Button(root_2, text='确定放招', command=lambda: app.second_move(filepath.get(), time_interval.get(), root_2),bootstyle=(SUCCESS, OUTLINE)).grid(row=3, column=1, pady=10)elif formula == 3:title1 = '第三式:不说了,扔图'text1 = '选择表情包文件夹'tk.Button(root_2, text='确定放招', command=lambda: app.three_move(filepath.get(), time_interval.get(), root_2),bootstyle=(SUCCESS, OUTLINE)).grid(row=3, column=1, pady=10)root_2.title(title1)root_2.geometry('700x190')filepath = tk.StringVar()  # 接收路径time_interval = tk.IntVar()  # 接收放招间隔tk.Label(root_2, text=title1, font=('华文行楷', 22)).grid(row=0, column=1)tk.Label(root_2, text='文件路径:', font=('华文行楷', 15)).grid(row=1, column=0)tk.Label(root_2, text='放招间隔(s):', font=('华文行楷', 15)).grid(row=2, column=0)def select_file(filepath):  # 选择# 选择文件夹if formula == 2:select_file_path = filedialog.askopenfilename()  # 使用askopenfilename函数选择单个文件elif formula == 3:select_file_path = filedialog.askdirectory() # askdirectory选择文件夹filepath.set(select_file_path)tk.Entry(root_2, textvariable=filepath, font=('黑体', 15)).grid(row=1, column=1)tk.Entry(root_2, textvariable=time_interval, font=('黑体', 15)).grid(row=2, column=1)tk.Button(root_2, text=text1, command=lambda: select_file(filepath)).grid(row=1, column=2, pady=10)# 倒计时def count_down(self, info=None):pass"""
=============== 功能实现 ================
"""
class Send_information(object):def __init__(self):pass# 放招函数,用于第一、二式def Release_moves(self, words=None, times=0, time_interval=0, txt_li=None): # times接收发送的次数,time_interval接收发送的时间间隔keyboard = key()  # 获取键盘权限mouse = mouse_el()  # 获取鼠标权限mouse.press(Bu.left)  # 鼠标左键点击mouse.release(Bu.left)  # 鼠标左键松开n = 5print('请在五秒内将鼠标放到聊天框内并点击!!!')for k in range(5):print(f'倒计时{n - k}秒')time.sleep(1)  # 程序运行等待五秒你是猪if times == 0:for i in txt_li:keyboard.type(f"{i}")  # 输入框的内容keyboard.press(Key.enter)  # 回车键按下keyboard.release(Key.enter)  # 回车键松开time.sleep(time_interval)else:for i in range(times):keyboard.type(f"{words}")  # 输入框的内容keyboard.press(Key.enter)  # 回车键按下keyboard.release(Key.enter)  # 回车键松开time.sleep(time_interval)# 接收用户输入的数据def first_move(self, words, times, time_interval, root_1):root_1.destroy()self.Release_moves(words=words, times=times, time_interval=time_interval) # 调用放招函数# 接收用户选择的文件路径def second_move(self, txt_path, time_interval, root_2):root_2.destroy()txt_li = [] # 保存txt中的语句with open(txt_path, 'r', encoding='utf-8') as f:for line in f: # 循环遍历输出txt文件内容if line in ['\n', '\r\n']: # 判空处理passelif line.strip() == "": # 空行直接跳过passelse:txt_li.append(line.strip()) # 将内容保存到txt中self.Release_moves(txt_li=txt_li, time_interval=time_interval) # 调用放招哈数# 接收用户选择的图片def three_move(self, photo_path, time_interval, root_3):root_3.destroy()filepath = [photo_path + '/' + file for file in os.listdir(photo_path)] # 拼接路径i = 0n = 5print('请在五秒内将鼠标放到聊天框内并点击!!!')for k in range(5):print(f'倒计时{n - k}秒')time.sleep(1)  # 程序运行等待五秒你是猪# 复制图片for path in filepath:try:im = Image.open(path)im.save('11.bmp')aString = windll.user32.LoadImageW(0, r"11.bmp", win32con.IMAGE_BITMAP, 0, 0, win32con.LR_LOADFROMFILE)except:continueif aString != 0:  ## 由于图片编码问题  图片载入失败的话  aString 就等于0win32clipboard.OpenClipboard()win32clipboard.EmptyClipboard()win32clipboard.SetClipboardData(win32con.CF_BITMAP, aString)win32clipboard.CloseClipboard()keyboard = key()  # 获取键盘权限if i == 0:i += 0pyautogui.hotkey('ctrl', 'v')keyboard.press(Key.enter)  # 回车键按下keyboard.release(Key.enter)  # 回车键松开time.sleep(time_interval)if __name__ == '__main__':root = tk.Window()   # 建立一个根窗口root.title('爆炸信息') # 窗口名称root.geometry('500x300') # 窗口大小  宽x高app = Send_information() # 实例化Send_information对象Explosion_window(root, app) # 实例化Explosion_window对象root.mainloop()

❓这时你可能会问

诶,到了这的小伙伴可能会有些疑问:表情包怎么下载呀?一个个手动下载岂不是太麻烦了呀……
👉别担心,我怎么会让你们动手呢,最多动动脑😄

来来来!敲黑板了!!!现在布置一个作业!接下来我将放一个批量下载表情包的源码,通过观察源码进行操作,实现图片下载。

提醒!真相只有一个:只用改url 😁

在这里插入图片描述

👀 批量获取表情包

import requests
from lxml import etree
import os
import threadingdef get_url(url, img_urls): #获取图片urlres = requests.get(url, headers=headers)    # 发送请求html = etree.HTML(res.text)     # 将html元素转换成html对象img_urls += html.xpath('//div[@class="thumbnail"]/a/img/@src')def user_choose(): # 用户选择下载图片的页数img_urls = []  # 存放图片url# 请输入下载网址url = 'http://www.bbsnet.com/egao'# 用户输入页数page = int(input('请输入获取的页数:'))for i in range(0, page):if page == 0:get_url(url, img_urls)elif page >= 1:link = url + f'/page/{i+1}'     # 拼接链接get_url(link, img_urls)   #调用获取图片url的函数return img_urlsdef download_picture(img_url, i, j): # 下载图片res = requests.get(img_url, headers)with open(f'./表情包/表情包-{i}.{j}', 'wb') as f:f.write(res.content)if __name__ == '__main__':if not os.path.exists('./表情包'):os.makedirs('./表情包')headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}img_urls = user_choose()threads = []for i in range(len(img_urls)):t = threading.Thread(target=download_picture, args=(img_urls[i], i, img_urls[i][-3:]))threads.append(t)for t in threads:t.start()

🛀结束语

实话实说,写这篇文章总共画了我三个多小时😭,一边调试一边写,期间又删删改改一些内容,减少代码量,将代码逻辑变得更加严谨些,再加上之前写代码的时间,录视频,制作gif……,加起来应该有七八个小时吧,欸,千年老腰要塌了😐(卑微求个三连🙏)

不管怎样,总算是写完了😄
不知道小伙伴们是否喜欢这一片文章,如果喜欢,可以旋个三连 点赞👍 收藏🌈 关注哦💖 您的支持,就是我更新的最大动力!感谢🌹

❗️提醒:爆炸信息窗口仅供娱乐,请勿骚扰他人,避免给他人造成生活上的不便~

peace~

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

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

相关文章

微软报告:GPT-4可以算早期AGI/ 百图生科发布AI生成蛋白质平台/ Arm寻求上调芯片设计价格…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是3月24日星期五。这周依然是技术炸炸炸的一周。 更多新鲜事,咱们一起来看~ 微软发布长篇报告:GPT-4已经可以算早期AGI 微软最新发布的154页长篇实验报告称:GPT-4已经可以被…

自媒体文案伪原创文章生成器软件

如何编写文案,不管是我们的博客、自媒体还是企业网站,想要获得关注和收录需要我们具有高度原创、吸引用户点击和满足搜索引擎规则的文案。 我们现在有很多从事文案工作的职位,看似不起眼但是网上各种爆文和热门短视频背后都离不开我们文案的支…

013利用脑电信号自动检测和诊断癫痫发作的深度卷积神经网络-2017(800引用)

Deep convolutional neural network for the automated detection and diagnosis of seizure using EEG signals ABSTRACT 脑电图(EEG)是一种常用的辅助测试,有助于癫痫的诊断。EEG信号包含关于大脑电活动的信息。传统上,神经学家采用直接视觉检查来识…

运动想象脑电信号数据集及其预处理方法

脑电信号基础知识 在BCI应用中,获取脑信号的途径包括多种技术方式。其中,EEG是最适合脑机接口应用的技术,主要因为无创性、便携式和高时间分辨率是其的优势。EEG是记录头部表面不同位置之间电位差异的时间记录,它起源于分布在大脑皮层的数百万个神经元的同步电活动的总和。…

EEG- gan:用于脑电图(EEG)大脑信号的生成对抗网络2018

EEG-GAN: Generative adversarial networks for electroencephalograhic (EEG) brain signals Abstract 生成对抗网络(GANs)最近在涉及图像的生成应用中非常成功,并开始应用于时间序列数据。在这里,我们将EEG- gan描述为生成脑电图(EEG)大脑信号的框架…

【汇编】二、预备知识(一只 Assember 的成长史)

嗨~你好呀! 我是一名初二学生,热爱计算机,码龄两年。最近开始学习汇编,希望通过 Blog 的形式记录下自己的学习过程,也和更多人分享。 这篇文章主要讲述学习汇编所需的基础知识。 话不多说~我们开始吧! 目…

聊天记录误删了有办法找回吗?微信聊天记录误删怎么恢复

今天小编想要找回一篇发过给好友的重要文档,结果发现,该文档已被删除…这么重要的东西,都不记得什么时候删除了,头都大了,着急想找回文档的我,脑子里一直悬浮着:聊天记录误删了有办法找回吗&…

微信聊天记录删了如何找回

微信聊天记录删了如何找回?微信聊天记录删除,怎么恢复?这是最近被问最多的问题,今天就来跟大家讲讲怎么恢复微信聊天记录。(任何数据恢复都不能百分百,所以大家最好的办法还是把比较重要的聊天记录备份一下…

转:你的领导激情在哪里?发现它并为之而奋斗

个人理解: 激情,自省,经历 学会接受别人 激情和使命感 让大家的眼睛瞄准最终的结果 你的领导激情在哪里?发现它并为之而奋斗 你的领导激情在哪里?发现它并为之而奋斗 一个人仅凭空想象是很难找到自己的激情的。要找…

加班到十点,领导警告你不够努力啊!我TMD。。。

又到了一周总结的时刻最近因为搬家,导致好两周没总结了,人要是懒惰下来,再起来真的好艰难啊。 加班到十点,被警告不够努力 事情是这样子的,同事跟我说,楼上的部门最近裁员,大概裁员20%&#xff…

领导给你安排任务,这三种话,越早说越好

这年头都讲究执行力, 领导请来管理大师给员工一通培训, 执行力是上去了。 领导布置工作,员工都嗷嗷的上去干。 可是事情都干差了、干坏了、干偏了, 这算是执行力好吗?一点不算。 错误的方向,加上牛逼…

跟领导汇报工作时,这句话建议你不要说

[ 爱开发]陪伴你一起成长,一起进步 跟领导汇报工作时,这三个字,建议你不要说 文 | 洪生鹏 跟领导汇报工作时,要是有某项工作那里做得不好,被领导指出时,有的人喜欢用“我以为”来答复…

领导总是喜欢在快下班时开会,一开就是一两个小时,好烦啊

张工是一名程序员,在一家互联网公司上班,最近部门来了一位新领导,总喜欢在快下班的时候开会,而且一开就是一两个小时,有重要事开会还说得过去,可有的会议始终是太无聊了,张工始终想不明白为何新…

请别把加班说的那么“高大上”

请别把加班说得那么“高大上” 【本期观点】IT行业加班,到底有没有价值? 【导语】众所周知,说到 IT 行业,大家的第一印象都是「加班严重」 不得不说,加班确实是 IT 行业潜规则了,IT 行业也被冠以「月…

熬夜加班做出的报表被领导吐槽太丑?那是你没用这个

五一刚结束,一个在旅游运营部门上班的朋友向我诉苦,今年的旅游业虽然因为疫情增长有所放缓,但并不影响五一旅游黄金期结束后他要做报表,领导现在除了关注疫情和行业发展,就是在不断的精细化企业管理,像以前…

升职加薪,领导看的从来都不是谁更“努力”

许多程序员都认为,只要我足够努力,在职场中就一定能升职加薪。 但现实却是: 你为了项目进度经常加班到深夜,领导却对你视而不见;开会的时候,明明你的想法更有可行性但总是不被看好;无论什么工作…

深夜加班,我该怎么向领导邀功

Jenkins进阶:钉钉机器人和打包下载【再也不背发布的锅啦~】 职场小技巧应用场景场景小问题 jenkins配置钉钉又来新消息啦~~jenkins集成钉钉配置 谁打包没拉代码!!jenkins打包下载配置 职场小技巧 最近每次下班后悟空总是溜出去吃饭&#xff0…

同时进公司,准时上下班,从不加班加点的他,在我这个加班狂魔前升职了......

前言 我最近心态很崩。 和我同期一道进公司的同事又升了一级,可是明明大家在进公司时,同事不论是学历还是工作经验,样样都不如自己,眼下不过短短的两年时间便一跃在自己的职级之上,这着实让我有几分不甘心。 我想不…

IT 已成为最疯狂的加班行业,没有之一

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 据说,某互联网公司招了个日本人做研发,上班第一天就对部门同事说:“我在日本工作时是个加班狂,每天都很晚回家,…

那个每天准时上下班,从不愿意加班加点的人,却在我前面升职了...

前言 我最近心态很崩。 和我同期一道进公司的同事又升了一级,可是明明大家在进公司时,同事不论是学历还是工作经验,样样都不如自己,眼下不过短短的两年时间便一跃在自己的职级之上,这着实让我有几分不甘心。 我想不…