按键迭代

时间:2017-06-04 13:52:29

标签: python loops

我正在尝试使用Python创建一个程序,每次按“输入”时都会捕获并保存一个独特的屏幕截图。我在为所述屏幕截图分配唯一文件名时遇到问题。这是关于捕获屏幕截图的代码:

def on_press(key):
if key == Key.enter:
    x = 1
    bitmap = autopy.bitmap.capture_screen()
    bitmap.save('C:\Users\User\Desktop\Folder\Capture{}.png'.format(x))
    x += 1

正如您所看到的,我每次按“输入”时,我都会初始化一个变量x,我希望将其值增加1。程序序列如下:按Enter键 - >捕获截图1 - >将x值增加1 - >按Enter键 - >捕获截图2 - >将x值增加1(依此类推)。我尝试使用for循环来改变x的值,但结果通常涉及在我按下“Enter”后立即捕获大量的屏幕截图。怎么解决?任何帮助是极大的赞赏。

2 个答案:

答案 0 :(得分:0)

每次key设置为Key.enter时,您都会将x的值重置为1。因此,当您保存文件时x始终为1。您需要在函数外部保存x的状态。

x = 1

def on_press(key):
    global x
    if key == Key.enter:
        bitmap = autopy.bitmap.capture_screen()
        bitmap.save('C:\Users\User\Desktop\Folder\Capture{}.png'.format(x))
        x += 1

答案 1 :(得分:0)

def on_press(key):
    if key == Key.enter:
        x = 1
        bitmap = autopy.bitmap.capture_screen()
        bitmap.save('C:\Users\User\Desktop\Folder\Capture{}.png'.format(x))
        x += 1

您的问题中的代码未正确缩进。然后,函数内的'x'是'local'变量。它在下次通话时没有正确的值。您可以像这样定义x的全局实例:

x = 1

def on_press(key):
    global x
    if key == Key.enter:
        bitmap = autopy.bitmap.capture_screen()
        bitmap.save('C:\Users\User\Desktop\Folder\Capture{}.png'.format(x))
        x += 1