【问题标题】:Screenshot several regions of the screen and save them with PyAutoGui - Python 3.4屏幕截图几个区域并使用 PyAutoGui - Python 3.4 保存它们
【发布时间】:2017-04-13 02:34:26
【问题描述】:

我是 python 编程的初学者,我对 PyAutoGui 的屏幕截图功能有疑问。

这是我的代码:

#Libraries
import pyautogui, os

#Work Directory
os.chdir('C:/Users/mypath')

#Data and Variables:
ListOfNames=['T1.png','T2.png','T3.png']

#list of desired positions to screenshot:
Several_Regions=[(760, 142, 22, 23),(692, 352, 19, 21),(553, 456, 19, 21)]

#Program:  
for name in ListOfNames:
    for LeftTopWidthHeight in Several_Regions:
        pyautogui.screenshot('%s'%(name), region = LeftTopWidthHeight)

这应该是我提到的每个区域的屏幕截图 在三个 .png 文件中的区域列表 Several_Regions 中。

但它会创建 3 个 .png 文件,其中包含完全相同的相同区域 屏幕截图这是第三个(也是最后一个)区域(553, 456, 19, 21)...

照片:

我是不是在什么地方忘记了什么?请帮我解决这个问题:)

【问题讨论】:

    标签: python python-3.x screenshot python-3.4 pyautogui


    【解决方案1】:

    这是因为在 嵌套 for 循环中,您实际上制作了九张屏幕截图。对于每个文件,您保存第三个文件:最后一个区域。因为在嵌套的 for 循环中,您实际上会制作带有参数的屏幕截图:

    • ListOfNames[0],Several_Regions[0],
    • ListOfNames[0],Several_Regions[1],
    • ListOfNames[0],Several_Regions[2],
    • ListOfNames[1],Several_Regions[0],
    • ListOfNames[1],Several_Regions[1],
    • ListOfNames[1],Several_Regions[2],
    • ListOfNames[2],Several_Regions[0],
    • ListOfNames[2],Several_Regions[1],和
    • ListOfNames[2],Several_Regions[2]。

    如您所见,对于每个ListOfNames,您调用的最后一个是Several_Regions[2]。

    但是,您可以使用zip 来确保将第一个区域保存为第一个文件名等:

    for name,LeftTopWidthHeight in zip(ListOfNames,Several_Regions):
        pyautogui.screenshot('%s'%(name), region = LeftTopWidthHeight)

    鉴于您在此处显示的名称​​相当一致,您可以删除ListOfNames 并改用enumerate(..):

    for idx,LeftTopWidthHeight in enumerate(Several_Regions):
        pyautogui.screenshot('T%s.png'%idx, region = LeftTopWidthHeight)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多