想必看过《破事精英》的朋友一定会对莫菲提及的各种稀奇古怪的软件种草。
所以看完最后一集后的我,决定把"凝固的桌面"给实现出来。
这里使用pyautogui来完成操作。
一共三步操作
pyautogui.hotkey('win', 'd')
pyautogui提供了操作键盘的方法
按住某个按键pyautogui.keyDown("a")
松开某个按键pyautogui.keyUp("a")
按下放开某个按键pyautogui.press("a")
所以我们可以通过上述的组合去实现多个按键的单独操作。当然,pyautogui还提供了快捷键的连续操作,比如我们以返回桌面的快捷键为例:pyautogui.hotkey('win', 'd')
因为考虑到有的电脑反应较慢,所以在我们执行完成返回桌面的快捷操作,去截图桌面的时候最好sleep 一秒或者两秒。使用pyautogui截图需要依赖Pillow。因此要记得先检查Pillow是否安装。安装完成后就可以调用截图方法了。
screenshot_name = 'my_screenshot.jpg'
pyautogui.screenshot(screenshot_name)
替换桌面这里需要去修改注册表的值,我们传入我们刚刚截图的绝对路径即可
import win32api, win32con, win32gui
def windows_img(paperPath):
"""修改注册表实现桌面壁纸切换"""
k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, 'Control panel\\Desktop', 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(k, 'Wallpaper', 0, win32con.REG_SZ, '2')
win32api.RegSetValueEx(k, 'TileWallpaper', 0, win32con.REG_SZ, '0')
win32api.RegCloseKey(k)
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, paperPath, win32con.SPIF_SENDWININICHANGE)
第一种我们可以通过执行快捷键 shift+f10+v+d
去执行桌面图标隐藏。
pyautogui.hotkey("shift", "f10", "v", "d")
需要注意的是这个快捷键第一次执行后会将图片隐藏,第二次执行就显示出来了。所以我们需要记得否桌面是否"凝固"进行判定。这里就简单地通过截图是否存在来判定即可。
当然,我们还有一种方法是去在桌面中创建一个文件夹,然后将所有图标移动进去后隐藏
def create_hide(dirname="hide"):
username = getpass.getuser()
desktop_path = f'C:\\Users\\{username}\\Desktop'
new_dir = os.path.join(desktop_path,dirname)
if not os.path.exists(new_dir):
os.makedirs(new_dir)
for icon in os.listdir(desktop_path):
try:
current_path = os.path.join(desktop_path,icon)
target_path = os.path.join(new_dir,icon)
shutil.move(current_path,target_path)
except Exception:
print("%s移动失败,请检查文件是否已打开或者是文件夹"%icon)
完整代码如下,效果非常“凝固”
import os
import time
import pyautogui
import getpass
import shutil
import win32api, win32con, win32gui
def windows_img(paperPath):
"""修改注册表实现桌面壁纸切换"""
k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, 'Control panel\\Desktop', 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(k, 'Wallpaper', 0, win32con.REG_SZ, '2')
win32api.RegSetValueEx(k, 'TileWallpaper', 0, win32con.REG_SZ, '0')
win32api.RegCloseKey(k)
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, paperPath, win32con.SPIF_SENDWININICHANGE)
def create_hide(dirname="hide"):
"""创建文件夹移动图标后隐藏桌面"""
username = getpass.getuser()
desktop_path = f'C:\\Users\\{username}\\Desktop'
new_dir = os.path.join(desktop_path,dirname)
if not os.path.exists(new_dir):
os.makedirs(new_dir)
for icon in os.listdir(desktop_path):
try:
current_path = os.path.join(desktop_path,icon)
target_path = os.path.join(new_dir,icon)
shutil.copy(current_path,target_path)
except Exception:
print("%s移动失败,请检查文件是否已打开或者是文件夹"%icon)
if __name__ == '__main__':
pyautogui.FAILSAFE = False
pyautogui.hotkey('win', 'd')
time.sleep(1.5)
screenshot_name = 'my_screenshot.jpg'
img_path = os.path.abspath(screenshot_name)
if not os.path.exists(img_path):
pyautogui.screenshot(screenshot_name)
windows_img(img_path)
# planB隐藏需要打开底下这层注释
#create_hide()
pyautogui.hotkey("shift", "f10", "v", "d") # 隐藏桌面图标快捷键
更多代码可以关注wx公众号"一颗程序树"获取