首页 > 解决方案 > 在 python 中使用 cytpes 模块设置 MS 桌面背景太慢,无法像视频一样使用。

问题描述

tl;dr 使用 python 设置桌面背景的常用方法对于动画目的来说太慢了。我想知道是否有任何选项可以在不破坏计算机性能的情况下将背景设置为 O(5fps)。

~~~~

大家好!

前几天我对自己的这个想法感到兴奋:我想让我的桌面背景循环显示从 NASA 网站下载的最新太阳图像(来自 SDO)。它奏效了!我有一个在我的电脑后台运行的代码,每三十秒将我的桌面更新为来自互联网的最新图像(它还循环通过波长。非常有趣!。)真的很酷!每天看着它,看看太阳如何变化是很酷的。所以这是成功的。

但是太阳也有很多短期的动态,我也希望能够观察到!所以,我想,解决方案很简单!只需保留您下载的最后 30 张图像,然后快速为它们服务!循环很简单(提炼到基本组件):

import os
import ctypes
import time

#Get the filepaths of all pictures in a folder
folderPath = fromGod()
items = os.listdir(folderPath)  
listOfFiles = [folderPath + item for item in items]

frameTime = 0.25 #second
runFor = 30 #seconds

#Cycle through the pictures 
startTime = time.time()
while time.time() - startTime < runFor:
    for file in listOfFiles:
        ctypes.windll.user32.SystemParametersInfoW(20, 0, file , 0)
        time.sleep(frameTime)

这确实有效!它看起来很不错,我什至会在它完全停止工作之前满足它似乎有能力的 4 fps。问题是每次调用 ctypes 函数都会导致整个系统{freeze?. 口吃?,慢点?}。它完全扼杀了这个想法,因为我无法让这段代码在后台运行。它使我的鼠标在我的屏幕上结结巴巴。

但是我看到存在可以使桌面背景变成电影的程序,所以我希望有其他方法可以在 python 中自己完成。我想我只是不明白为什么这个功能会对系统造成如此大的消耗。但是在这里搜索堆栈溢出和在谷歌上搜索的替代方法并没有取得成果。

我在戴尔 Windows 10 笔记本电脑上,以 Anaconda 形式运行 python 3.6.5。

标签: pythonwindowsoptimizationctypesdesktop-background

解决方案


推荐阅读