世界盃日曆提醒小卡片:快用Python程式語言來實現它

七月線上實驗室發表於2018-06-14

四年一度的世界盃足球賽將於北京時間2018614日晚上23:00開賽,第一場比賽將在俄羅斯莫斯科的盧日尼基體育場進行,東道主俄羅斯對戰沙烏地阿拉伯。


此次2018年俄羅斯世界盃(英語:2018 FIFA WorldCup,俄語:Чемпиона́т ми́ра по футбо́лу 2018)是第21屆世界盃足球賽。比賽時間從2018年6月14日到7月15日,比賽場地涉及俄羅斯境內11座城市中的12座球場。這是世界盃首次在俄羅斯境內舉行,也是世界盃首次在東歐國家舉行,同時是繼2006年德國世界盃後世界杯再一次在歐洲舉行(當然還有一個小祕密:此次世界盃中國隊沒有參加哦)。

 

趕上此次盛大賽事熱點,小編時不時的刷一下熱搜、知乎、百度貼吧等,突然發現一個好玩的帖子,快來看一看如何使用Python程式語言做世界盃日曆提醒小卡片吧,做好了送給你關心的同事、朋友、親人,時不時的提醒一下他們關注的世界盃熱點。下面以天氣日曆小卡片的製作為例,剩下的大家自由發揮哈!


天氣日曆小卡片製作方法:

 

每天早上生成天氣日曆小卡片,並自動發給微信好友:

640?wx_fmt=jpeg


每天的背景都不同,底端天氣的背景色也會自動根據背景的主色調進行相應的調整。圖片中間的旋轉日曆也會根據當天日期進行改變。

640?wx_fmt=jpeg


開發過程用到了Python和Qt designer,還有Photoshop,從構思到最終實現只花了一下午加一晚上。因為Python豐富的庫,所以對於初學者來說,匯入幾個庫就能實現想要的功能,非常簡單方便。


主要過程就是用pyqt5顯示一個去掉標題欄的介面,匯入PIL庫截個圖,截完後用itchat庫發給微信好友,再把使用者介面關閉,就是這樣。


640?wx_fmt=jpeg


具體實現過程是這樣的,首先是用PS做出月日周的旋轉圖形,當然,這些字母樣的形狀是有含義的:

640?wx_fmt=jpeg

轉一下儲存一下,其實也花不了多久。


然後在Qt designer裡面佈局一下,就是把一堆標籤拖到合適的位置上,右鍵改它們的背景圖片:


640?wx_fmt=jpeg


再把Qt designer生成的ui檔案轉成py檔案,匯入進去就可以操控介面上顯示的內容了。


背景圖片本來是想每天爬取一張手機桌布的,後來感覺圖片不可控不行,所以就一次性爬取了一大堆桌布慢慢用。


天氣欄的背景顏色是根據背景圖的主色調確定的,由於天氣的字型是白色所以忽略掉了比較淺的顏色:


Python通過PIL獲取圖片的主要顏色並和顏色庫進行對比的程式碼,Python程式碼片段分享(http://www.sharejs.com/codes/python/8655)

640?wx_fmt=jpeg

比如上面樹葉圖的結果是這樣的


圖片中間的英文和翻譯,是從金山詞霸開放平臺是爬取的每日一句:

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()
640?wx_fmt=jpeg

天氣和日期資訊的獲取以及天氣圖示的顯示其實是用了我以前寫樹莓派魔鏡時的程式,天氣圖示是從千圖網上下的:


你有什麼有微控制器或開源硬體做的有意思的作品嗎?(https://www.zhihu.com/question/265112599/answer/393361405

640?wx_fmt=jpeg

當所有要顯示的資訊獲取完之後,只要讓它們在介面上顯示就可以了,要顯示圖片只需要這樣,改變標籤的樣式表就行:

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')#傳送文字


640?wx_fmt=jpeg

至於我為什麼會有做這個東西的想法,其實是因為這兩張圖片,左邊是在北大光華管理學院的公眾號是看到的,右邊是某個天氣APP的設計圖:


640?wx_fmt=jpeg

作者:Dean
連結:https://www.zhihu.com/question

/21395276/answer/407008072

來源:知乎

640?wx_fmt=gif

《機器學習 第九期》從零到機器學習實戰專案,提供GPU&CPU雙雲平臺,作業考試1V1批改(優秀學員內推BAT等);點選文末“閱讀原文”瞭解詳情。


2_06.png2_06.png限時優惠組團領:即日起至6.18日24點之前,2_06.png新學員兩兩組團報名各減100元,2_06.png已經報名的老學員推薦一名新學員報名各返100元,想組團報名者請加微信客服:julyedukefu_022_06.png2_06.png


640?wx_fmt=jpeg

640?wx_fmt=jpeg

相關文章