Ewan-Ahiouy 发表于 2024-2-3 14:08:30

Python:用tkinter写一个截图程序

本帖最后由 Ewan-Ahiouy 于 2024-2-4 20:02 编辑

前情提要

大家好!我是EA!{:10_298:}

距离我接手了{:10_305:} 这个求贤令之后,已经过去了有6个月的时间{:10_284:}

鸽了有6个月啊!{:10_247:}

(学业紧张时间有限啊......{:10_266:} )

终于...到寒假啦!!!{:10_298:}

到了寒假,时间多了起来,终于终于,在今天,写好了!{:10_298:}

虽然......有一些功能我实在是实现不了......(长截图啊啊啊啊啊){:10_255:}

但是还是决定发出去交个差{:10_278:}

毕竟鸽了太久太久了...{:10_283:}

虽然没有长截图,但是其他功能已经完成啦!{:10_256:}

如果你喜欢的话,可以动动发财的小手,给这篇帖子一点评分哦~{:10_264:}

谢谢啦~

注:代码的长截图的那个按钮,实际的功能其实和自定义截图一样的{:10_256:}

正文

解释一下代码原理{:10_305:}

全屏截图

就是PIL模块获取全屏的图片,然后保存就可以了。

# 获取窗口图片
img = ImageGrab.grab()
# 获取文件保存位置
fileName = filedialog.asksaveasfilename()
# 未保存
if not fileName:
    return
if ".jpg" not in fileName:
    fileName += ".jpg"
# 保存图片
img.save(fileName)
# 展示图片
img.show()

自定义截图

这个就有一点复杂了{:10_272:}

我还借鉴了一点点小甲鱼老师的代码{:10_252:}

小甲鱼老师不会介意吧{:10_329:}

我的办法是:

按下按钮后,把窗口的所有组件全部隐藏,然后全屏并设置为半透明。

之后,检测是否按下鼠标。按下时,记住坐标。

然后,检测拖动。拖动时,会出现一个矩形,可以显示截图的区域,且中间会显示大小。(借鉴小甲鱼老师的录屏程序{:5_109:} )

待到鼠标弹起,记住坐标,获取窗口的全截屏,然后把选择的区域裁出来,再保存。

最后窗口、组件恢复原样,OK!{:5_95:}

以下是实现代码,回复获取哦{:10_305:}

PS:(原本还想放几张截图的,结果发现不行{:10_266:} )

代码实现

**** Hidden Message *****

程序界面



挺简洁的吧{:10_327:}

结束语

这就是我写出的截图程序了{:10_279:}

如果大家觉得有用,还请评分,谢谢啦{:10_281:}

球球啦!{:9_221:}




Ewan-Ahiouy 发表于 2024-2-3 19:17:11

谢谢大家支持!开森{:5_109:}

Ewan-Ahiouy 发表于 2024-2-3 14:12:36

AT区:@python爱好者. @zhangjinxuan @学习编程中的Ben @liuhongrun2022 @sfqxx @cjjJasonchen @小甲鱼 @python爱好者. @歌者文明清理员

求支持,谢谢~{:5_109:}

liuhongrun2022 发表于 2024-2-3 14:17:43

很不错啊{:5_106:}

Ewan-Ahiouy 发表于 2024-2-3 14:18:35

liuhongrun2022 发表于 2024-2-3 14:17
很不错啊

谢谢~{:10_297:}

某一个“天” 发表于 2024-2-3 14:20:54

总有这种人才{:10_243:}

Ewan-Ahiouy 发表于 2024-2-3 14:21:32

某一个“天” 发表于 2024-2-3 14:20
总有这种人才

{:9_241:}啥意思

某一个“天” 发表于 2024-2-3 14:23:14

Ewan-Ahiouy 发表于 2024-2-3 14:21
啥意思

羡慕嫉妒恨

陶远航 发表于 2024-2-3 14:25:25

写出来了?!我还以为你跑了{:10_256:}

Ewan-Ahiouy 发表于 2024-2-3 14:26:37

陶远航 发表于 2024-2-3 14:25
写出来了?!我还以为你跑了

刚进入初中学业紧张...{:10_299:}

到了寒假有时间啦~{:10_298:}

stumblemodel 发表于 2024-2-3 15:04:51

{:10_277:}{:10_256:}

zhangchenyvn 发表于 2024-2-3 16:01:31

为啥没有@我?

15945179970 发表于 2024-2-3 16:07:07

{:5_106:}

青出于蓝 发表于 2024-2-3 17:17:44

终于来啦{:10_254:}

liuhongrun2022 发表于 2024-2-3 17:24:09

zhangchenyvn 发表于 2024-2-3 16:01
为啥没有@我?

因为他刚回来,不认识你

15945179970 发表于 2024-2-3 17:38:53

{:5_107:}

日出之前 发表于 2024-2-3 18:07:01

Ewan-Ahiouy 发表于 2024-2-3 14:21
啥意思

就是夸你厉害的意思

中英文泡椒 发表于 2024-2-3 18:08:50

@yinda_peng @sfqxx_小 @cjjJasonchen

小甲鱼的二师兄 发表于 2024-2-3 18:42:11

不错呀!

Ewan-Ahiouy 发表于 2024-2-3 19:14:58

zhangchenyvn 发表于 2024-2-3 16:01
为啥没有@我?

加个好友~{:10_311:}

Ewan-Ahiouy 发表于 2024-2-3 19:15:12

日出之前 发表于 2024-2-3 18:07
就是夸你厉害的意思

{:10_278:}
页: [1] 2 3
查看完整版本: Python:用tkinter写一个截图程序