尝试为Python屏幕截图制作计时器

问题描述 投票:0回答:4

我正在尝试制作一个每 30 秒截取一次屏幕截图的脚本。

这就是我现在拥有的:

def on_click(x, y, button, pressed):
    global path
    if pressed:
        takeScreenshoot(path)
        print('ScreenShoot Taken')

我尝试过的事情。

import time
while True: # Change for a variable or a toggle
       time.sleep(30)
       takeScreenshoot(path)
       print('ScreenShoot Taken')

但是现在正因为如此,我的代码的下一部分无法访问

python loops iteration screenshot
4个回答
0
投票
import time
while True: # Change for a variable or a toggle
       time.sleep(30)
       takeScreenshoot(path)
       print('ScreenShoot Taken')

这可能是你可以做的事情,


0
投票

其实很简单

import time
while True:
    takeScreenshot(path)
    time.sleep(30)
    print('screenshot taken')

如果您想在一段时间后中断它,可以使用索引变量来代替,这个永远运行的简单 while 代码将起作用。


0
投票
from threading import Thread
import time

def f(x):
   while True:
    time.sleep(2.1)
    print(f'ScreenShoot Taken: {x}')


def g(x):
   for i in range(5):
    time.sleep(2.2)
    print(f'Ho Ho Ho: {x}')


f = Thread(target=f, args=["bla"])
f.daemon = True
f.start()
g("bla")

在此示例中,两个功能同时工作。您当然可以用您的代码替换 g() 。如果不将线程设置为

daemon
,程序不会退出,因为线程函数f()会无限运行。如果设置为daemon,则主代码退出时线程就会退出。


0
投票

以下是您可以使用的 Python 代码: 点击“Print Screen”按钮进行打印,点击“Esc”停止循环

    import sys
    from pprint import pprint as pp
    from pynput.keyboard import Key, Listener, Controller
    from PIL import Image, ImageGrab
    
    import click
    click.disable_unicode_literals_warning = True
    
    def print_screen(fname, itype="JPEG"):
        img = ImageGrab.grab()
        img.save(fname, itype, quality=100, subsampling=0)
        
    
    @click.command()
    @click.option('-f',     '--file_name',          default = 'snap',   help = 'File prefix.', required=True )
    
    def start_loop(**kwargs):
        
        fn=kwargs.get('file_name')
        assert fn
        
        def on_press(key):
            global pid
            if key == Key.enter:
                print('{0} pressed'.format(key))
                imgfn='%s_%03d.jpg' % (fn,pid)
                print_screen(imgfn)
                print('Screenshot %d is saved to "%s"' % (pid, imgfn))
                pid +=1
    
        def on_release(key):
            if key == Key.esc:
                # Stop listener
                return False
    
        with Listener(
                on_press=on_press,
                on_release=on_release) as listener:
            listener.join() 
            
    if __name__ == "__main__":
        pid=0
        start_loop()
© www.soinside.com 2019 - 2024. All rights reserved.