python放大镜实现[27行代码-tkinter-PIL-pynput]
如你所见,运行效果如下、
附code如下;
import tkinter from PIL import ImageGrab, ImageTk from pynput import mouse #博客园:戳人痛处 bili:崩析 control = mouse.Controller() root=tkinter.Tk() screenW=root.winfo_screenwidth() screenH=root.winfo_screenheight() root.geometry("500x300") root.wm_attributes('-topmost',1) #[0] #博客园:戳人痛处 bili:崩析 root.overrideredirect(True) #不显示标题栏 # [1] #博客园:戳人痛处 bili:崩析 def run(): global immg # [2] x,y = control.position # [3] xx =ImageGrab.grab((x-50,y-30,x+50,y+30)) xxx=xx.resize((500,300)) immg=ImageTk.PhotoImage(xxx) #全屏抓取 canvas.create_image(250,150,image=immg) # [4] root.geometry("500x300+{}+{}".format(x+50,y+30)) #[5] root.after(func=run,ms=20) root.after(func=run,ms=100) #博客园:戳人痛处 bili:崩析 canvas=tkinter.Canvas(root,width=500,height=300) #创建白色画布 canvas.pack(fill=tkinter.BOTH,expand=tkinter.YES) #画布放置至窗体 root.mainloop()
代码比较简单,很容易看懂,但是全网就是找不到相关实现代码;now-time:2021-9-14-23:23:58
现在我实现后分享给你,只需注意几个点;
[0] 窗口置顶
[1] 不显示标题栏
[2] 全局化图像对象,避免销毁导致闪烁
[3] 获取鼠标坐标
[4] 画布从中心点开始绘制
[5] 不断刷新放大镜的位置
tk的after方法自调用刷新
第2种显示方式
显示效果如下
贴code如下
import tkinter from PIL import ImageGrab, ImageTk from pynput import mouse #博客园:戳人痛处 bili:崩析 control = mouse.Controller() root=tkinter.Tk() screenW=root.winfo_screenwidth() screenH=root.winfo_screenheight() root.geometry("500x300") root.wm_attributes('-topmost',1) #[0] #博客园:戳人痛处 bili:崩析 # root.overrideredirect(True) #不显示标题栏 # [1] #博客园:戳人痛处 bili:崩析 def run(): global immg # [2] x,y = control.position # [3] xx =ImageGrab.grab((x-50,y-30,x+50,y+30)) xxx=xx.resize((500,300)) immg=ImageTk.PhotoImage(xxx) #全屏抓取 canvas.create_image(250,150,image=immg) # [4] # root.geometry("500x300+{}+{}".format(x+50,y+30)) #[5] root.after(func=run,ms=20) root.after(func=run,ms=100) #博客园:戳人痛处 bili:崩析 canvas=tkinter.Canvas(root,width=500,height=300) #创建白色画布 canvas.pack(fill=tkinter.BOTH,expand=tkinter.YES) #画布放置至窗体 root.mainloop()
注释代码 [1] 和 [5]即可,作用是取消鼠标跟随并显示标题栏;
-------------====================分割线====================-------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!