四年一度的世界杯足球赛将于北京时间2018年6月14日晚上23:00开赛,第一场比赛将在俄罗斯莫斯科的卢日尼基体育场进行,东道主俄罗斯对战沙特阿拉伯。
此次2018年俄罗斯世界杯(英语:2018 FIFA WorldCup,俄语:Чемпиона́т ми́ра по футбо́лу 2018)是第21届世界杯足球赛。比赛时间从2018年6月14日到7月15日,比赛场地涉及俄罗斯境内11座城市中的12座球场。这是世界杯首次在俄罗斯境内举行,也是世界杯首次在东欧国家举行,同时是继2006年德国世界杯后世界杯再一次在欧洲举行(当然还有一个小秘密:此次世界杯中国队没有参加哦)。
赶上此次盛大赛事热点,小编时不时的刷一下热搜、知乎、百度贴吧等,突然发现一个好玩的帖子,快来看一看如何使用Python编程语言做世界杯日历提醒小卡片吧,做好了送给你关心的同事、朋友、亲人,时不时的提醒一下他们关注的世界杯热点。下面以天气日历小卡片的制作为例,剩下的大家自由发挥哈!
天气日历小卡片制作方法:
每天早上生成天气日历小卡片,并自动发给微信好友:
每天的背景都不同,底端天气的背景色也会自动根据背景的主色调进行相应的调整。图片中间的旋转日历也会根据当天日期进行改变。
开发过程用到了Python和Qt designer,还有Photoshop,从构思到最终实现只花了一下午加一晚上。因为Python丰富的库,所以对于初学者来说,导入几个库就能实现想要的功能,非常简单方便。
主要过程就是用pyqt5显示一个去掉标题栏的界面,导入PIL库截个图,截完后用itchat库发给微信好友,再把用户界面关闭,就是这样。
具体实现过程是这样的,首先是用PS做出月日周的旋转图形,当然,这些字母样的形状是有含义的:
转一下保存一下,其实也花不了多久。
然后在Qt designer里面布局一下,就是把一堆标签拖到合适的位置上,右键改它们的背景图片:
再把Qt designer生成的ui文件转成py文件,导入进去就可以操控界面上显示的内容了。
背景图片本来是想每天爬取一张手机壁纸的,后来感觉图片不可控不行,所以就一次性爬取了一大堆壁纸慢慢用。
天气栏的背景颜色是根据背景图的主色调确定的,由于天气的字体是白色所以忽略掉了比较浅的颜色:
Python通过PIL获取图片的主要颜色并和颜色库进行对比的代码,Python代码片段分享(http://www.sharejs.com/codes/python/8655)
比如上面树叶图的结果是这样的
图片中间的英文和翻译,是从金山词霸开放平台是爬取的每日一句:
import requests def iciba(): url = "http://open.iciba.com/dsapi/" resp = requests.get(url) contents = resp.json()['content'] note = resp.json()['note'] print(contents, note) return contents, note if __name__ == '__main__': iciba()
天气和日期信息的获取以及天气图标的显示其实是用了我以前写树莓派魔镜时的程序,天气图标是从千图网上下的:
你有什么有单片机或开源硬件做的有意思的作品吗?(https://www.zhihu.com/question/265112599/answer/393361405)
当所有要显示的信息获取完之后,只要让它们在界面上显示就可以了,要显示图片只需要这样,改变标签的样式表就行:
self.ui.month.setStyleSheet("border-image: url
(images/month/mon_{}.png)".format(self.yue))
self.ui.day.setStyleSheet("border-image: url
(images/day/day_{}.png)".format(self.ri))
self.ui.week.setStyleSheet("border-image: url
(images/week/{}.png)".format(self.week))
运行后窗口会默认在左上角,这个时候让程序按照窗口的大小截个图就可以了
Python实现屏幕截图的两种方式(https://www.jb51.net/article/134443.htm)
截图保存后,再将截图发给微信好友,利用itchat库就很简单了,但是首次登陆要扫二维码:
#coding=utf8 import itchat itchat.auto_login(hotReload=True) f="./background.jpg" itchat.send_image(f,toUserName = 'filehelper')#这里是将图片发给文件助手 itchat.send("success",toUserName = 'filehelper')#发送文字
至于我为什么会有做这个东西的想法,其实是因为这两张图片,左边是在北大光华管理学院的公众号是看到的,右边是某个天气APP的设计图:
作者:Dean
链接:https://www.zhihu.com/question/21395276/answer/407008072