基于Python打印文字到桌面壁纸上的提醒学习小程序

想法起点

最近本人在B站上边学习JAVA,但苦于JAVA有上百多P的选集
每次看完课关掉浏览器都必须将当前页面添加到收藏夹,然后再删掉之前保存的链接
在密密麻麻的小框框里一个一个点是真的不舒服,还容易点错别的地方,有点搞心态T_T;

如图所示:

上百P的学习视频**
(上百P的视频)**
框框点选复杂
(复杂的点选有点搞心态)

————————————————————————

于是我想到可以通过一个程序,将所学习的进度输入,并打印到桌面上即可实现提醒自己学习进度,输入地址即可关联直接进入,修改最后的P的部分即可继续学习

如图:
在这里插入图片描述
地址栏直接输入关键字即可出现相关链接
在这里插入图片描述
可以看到,直接修改最后的P=127即可继续,修改完成直接回车即可继续学习。

————————————————————————

先上效果图

1、打开程序
在这里插入图片描述
2、输入给定的学习P数:
在这里插入图片描述
输入后回车即可

3、回车后将自动关闭窗口,将在壁纸的右上角打印上P数
在这里插入图片描述

程序思路

1、首先是学习结束后进行输入集数(P),通过键盘输入;
2、程序得到集数P后,通过指定的图像坐标将P进行打印到桌面壁纸上;
3、打印完成后,直接输出图像到根目录,并通过程序设定其为壁纸;

程序代码

**程序模块使用:

import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np
import win32api
import win32con
import win32gui**

————————

1、首先是输入当前学习P数,并通过OpenCV模块读取原壁纸图像

print("今天又是学习的一天!请输入学习进度吧:") # 提示输入当前学习计划点
StudyPiont = int (input())  # 输入
bk_img = cv2.imread("1.jpg") # 读取1.jpg

2、通过PIL模块来对字体进行调整(字号、字体、大小等)

#设置需要显示的字体
fontpath = "font/simsun.ttc" # 设置字体
font = ImageFont.truetype(fontpath, 90) # 字体大小,当前90
img_pil = Image.fromarray(bk_img) #PiL模块
draw = ImageDraw.Draw(img_pil)

3、然后是对图像的确定点进行字符串的打印,绘制文字信息

#绘制文字信息
draw.text((4000, 100),  "当前JAVA学习计划:P"+str(StudyPiont), font = font, fill = (255, 255, 255))
bk_img = np.array(img_pil)

4、通过OpenCV模块实现图像的输出

#cv2.imshow("add_text",bk_img) #展示图像
cv2.waitKey()
cv2.imwrite("add_text.jpg",bk_img)  # OpenCV输出图像

// 当然,这里可以选择展示图像,我将其注释掉了,因为后期直接输入完就没了,没必要看效果。

5、通过系统模块设定壁纸(此处描述不是很清楚勿喷)

#设置壁纸模块
def setWallpaper(path):
        #打开注册表
        reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)

        #2:拉伸  0:居中  6:适应  10:填充
        win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2") 
        # 我们选择了拉伸
        #win32api.RegSetValueEx(reg_key,"Wallpaper") 
        #SPIF_SENDWININICHANGE:立即生效
        win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, path, win32con.SPIF_SENDWININICHANGE)

然后是最后直接调用这个def的函数即可:

setWallpaper(r"G:\工作\工程\python\在图像上写字\add_text.jpg")

这里我用了绝对地址,大家用的时候记得改,否则将会读取不到导致壁纸黑屏。

注意事项

1、程序在使用前,可以先提前设定好“add_text.jpg”为我们的壁纸,如果不这么设定,开机后壁纸将会还原;
2、我的程序里使用到了绝对地址,大家在使用过程中可以根据自己的情况进行修改;
3、可以将程序固定到Start窗口里,结束看课后方便打开;
4、文字坐标会根据图像的大小变化,因为用的字体定位是绝对定位,用的时候要多次修改调整好位置!

整体代码

import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np
import win32api
import win32con
import win32gui

print("今天又是学习的一天!请输入学习进度吧:") # 提示输入当前学习计划点
StudyPiont = int (input())  # 输入
bk_img = cv2.imread("1.jpg") # 读取1.jpg

#设置需要显示的字体
fontpath = "font/simsun.ttc" # 设置字体
font = ImageFont.truetype(fontpath, 90) # 字体大小,当前90
img_pil = Image.fromarray(bk_img) #PiL模块
draw = ImageDraw.Draw(img_pil)

#绘制文字信息
draw.text((4000, 100),  "当前JAVA学习计划:P"+str(StudyPiont), font = font, fill = (255, 255, 255))
bk_img = np.array(img_pil)
#draw.text((4000, 200),  "当前JAVA学习计划:P"+str(StudyPiont), font = font, fill = (255, 255, 255))
#bk_img = np.array(img_pil)

#cv2.imshow("add_text",bk_img) #展示图像
cv2.waitKey()
cv2.imwrite("add_text.jpg",bk_img)  # OpenCV输出图像

#设置壁纸模块
def setWallpaper(path):
        #打开注册表
        reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)

        #2:拉伸  0:居中  6:适应  10:填充
        win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2") # 选择了拉伸

        #
        #win32api.RegSetValueEx(reg_key,"Wallpaper") 

        #SPIF_SENDWININICHANGE:立即生效
        win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, path, win32con.SPIF_SENDWININICHANGE)

setWallpaper(r"G:\工作\工程\python\在图像上写字\add_text.jpg")

没有PIL模块和OpenCV模块的小伙伴也别担心,我给你们封装好了EXE,你们直接就能下载用:
CSDN下载地址(EXE封包+源码)

相关来源:

利用python PIL模块在图片上写文字
利用OpenCV python图像输入输出
用python设置windows系统桌面背景(壁纸)的代码

都看到这了,给点支持吧~点个赞也好呀!:)

猜你喜欢

转载自blog.csdn.net/u011463832/article/details/107856912