在Python中截屏 -- 跨平台

8 投票
2 回答
4105 浏览
提问于 2025-04-17 09:04

我需要截个屏,然后通过网络发送给一个服务。我想在发送的部分使用liburl这个库。

这样做能在不同的平台上都能实现吗,而且不需要最终用户安装额外的库或软件?

2 个回答

2

你也可以用PyQt5来实现这个功能:

import sys
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtWidgets import QApplication

app = QApplication(sys.argv)
screen = QGuiApplication.primaryScreen()
desktopPixmap = screen.grabWindow(0)
desktopPixmap.save('screendump.png')
10

标准库里没有现成的工具可以帮你做到这一点。理论上,你可以通过使用ctypes来进行与操作系统相关的系统调用来自己实现,但我觉得这会是很多不必要的工作。下面是一个使用wxPython来截屏的有效脚本:

import wx

app = wx.App(False)

s = wx.ScreenDC()
w, h = s.Size.Get()
b = wx.EmptyBitmap(w, h)
m = wx.MemoryDCFromDC(s)
m.SelectObject(b)
m.Blit(0, 0, w, h, s, 0, 0)
m.SelectObject(wx.NullBitmap)
b.SaveFile("screenshot.png", wx.BITMAP_TYPE_PNG)

撰写回答