企业推广类网站,wordpress怎么去掉rss,网站建设分析魅族,网站怎么做文件上传前言今天我看了一下自己的文件夹#xff0c;发现了自己写了许多似乎很无聊的代码。于是乎#xff0c;一个想法油然而生#xff1a;“生活已经很无聊了#xff0c;不如再无聊一点叭”。说干就干#xff0c;那就开一个专题#xff0c;我们称之为kimol君的无聊小发明。妙…啊…前言今天我看了一下自己的文件夹发现了自己写了许多似乎很无聊的代码。于是乎一个想法油然而生“生活已经很无聊了不如再无聊一点叭”。说干就干那就开一个专题我们称之为kimol君的无聊小发明。妙…啊~~~今天要做的东西就是用python写一个截屏工具。想必大家平时截屏的时候很多都是用的微信的ALTA或者是WINDOWS自带的截屏软件。作为技术宅的我怎么总是用别人的东西呢看我的上图效果还阔以好歹这个小猫咪截出来也是有模有样的~一、技术实现1. 相关库在python中可以实现截图的库有很多这里我用的是pyautogui它可以对指定区域进行截屏import pyautogui而界面部分(截屏的框选等)采用了tkinter库import tkinter as tk2. 定义窗口定义一个透明的窗口让它的大小与屏幕一样root tk.Tk()root.overrideredirect(True) # 隐藏窗口的标题栏root.attributes(-alpha, 0.1) # 窗口透明度10%root.geometry({0}x{1}00.format(root.winfo_screenwidth(), root.winfo_screenheight()))root.configure(bgblack)注alhpa参数用于设定透明度geometry函数用于设定窗口大小创建一个子窗口用于显示框选区域# 再创建1个Canvas用于圈选cv tk.Canvas(root)x, y 0, 0xstart,ystart 0 ,0xend,yend 0, 0rec 3. 绘制工具条绘制一个工具条方便后续增加功能。讲道理目前来说这个就是个鸡肋(可以省去)但是如果后续还想晚上功能的话会很有帮助。canvas tk.Canvas(root)canvas.configure(width300)canvas.configure(height100)canvas.configure(bgyellow)canvas.configure(highlightthickness0) # 高亮厚度canvas.place(x(root.winfo_screenwidth()-500),y(root.winfo_screenheight()-300))canvas.create_text(150, 50,fontArial -20 bold,textESC退出假装工具条)4. 定义事件函数监听鼠标和键盘事件实时监控框选区域和截屏具体的事件有# 绑定事件canvas.bind(, move) # 鼠标左键移动-显示当前光标位置root.bind(,sys_out) # 键盘Esc键-退出root.bind(, button_1) # 鼠标左键点击-显示子窗口root.bind(, b1_Motion)# 鼠标左键移动-改变子窗口大小root.bind(, buttonRelease_1) # 鼠标左键释放-记录最后光标的位置root.bind(,button_3) #鼠标右键点击-截屏并保存图片root.mainloop()监听鼠标光标位置def move(event):global x, y ,xstart,ystartnew_x (event.x-x)canvas.winfo_x()new_y (event.y-y)canvas.winfo_y()s 300x200 str(new_x) str(new_y)canvas.place(x new_x - xstart,y new_y -ystart)print(s , s)print(root.winfo_x(), root.winfo_y())print(event.x, event.y)创建子窗口def button_1(event):global x, y ,xstart,ystartglobal recx, y event.x, event.yxstart,ystart event.x, event.yprint(event.x, event.y , event.x, event.y)xstart,ystart event.x, event.ycv.configure(height1)cv.configure(width1)cv.config(highlightthickness0) # 无边框cv.place(xevent.x, yevent.y)rec cv.create_rectangle(0,0,0,0,outlinered,width8,dash(4, 4))改变子窗口大小def b1_Motion(event):global x, y,xstart,ystartx, y event.x, event.yprint(event.x, event.y , event.x, event.y)cv.configure(height event.y - ystart)cv.configure(width event.x - xstart)cv.coords(rec,0,0,event.x-xstart,event.y-ystart)松开鼠标记录最后的光标位置def buttonRelease_1(event):global xend,yendxend, yend event.x, event.y截屏并保存图片def button_3(event):global xstart,ystart,xend,yendcv.delete(rec)cv.place_forget()img pyautogui.screenshot(region[xstart,ystart,xend-xstart,yend-ystart]) # x,y,w,himg.save(screenshot.png)sys_out(None)退出程序def sys_out(even):root.destroy()二、后续改进这个还有很多可以改进的地方。截图的时候会有dos窗口遮挡这个解决办法由很多类似后台启动或者将.py编译为可执行文件等等使用不方便为了截图还的运行代码废话当然很不方便呀不然怎么说是个无聊的小发明呢。但是它也不是一无事处可以考虑把它放到后台运行。同样可以利用快捷键来唤醒它并完成截图。功能单一这只是一个很简单的demo既然可以截屏了那么我们离录屏还远吗(正如本文开头的动图右上角晃晃几个大字“ApowerREC”不给钱休想去掉哼~)那么我们为何不自己写一个呢写在最后最后感谢各位大大的耐心阅读~慢着大侠请留步… 动起可爱的双手来个赞再走呗 (๑◕ܫ๑)