用Tkinter做一个每日英语的程序
一、准备:
安装以下库:
- Tkinter
- requests
- pillow
- playsound
- pyinstaller
二、步骤分析:
找到一个合适的接口,获取推送每日英语的数据。
作者在网上看了一些API,没有比较合适的,就自己找了个接口,金山词典的每日一句:
点我点我^v^: 传送门看起来很舒服的,省去了不少麻烦,进入传送门就是我们需要的数据,每次请求数据的时候只用改下日期就可以了
接下来的任务就是,利用Tkinter撸个简单界面出来。通过请求返回的数据可以添加文字和美图和语音
项目打包,这里我们选择pyinstaller来进行打包成exe可执行程序。
pyinstaller -F -w -i [你的icon图片路径] [python源文件路径]
三、难点解决
- 安装pyinstall时,可能会报错,缺少一些东西。可以先安装 pywin32和wheel在试一下
- 图片和音频是给我们的url,如何应用?
请求图片url,用io.BytesIO 在内容中读写bytes,用Image.open打开,通过ImageTk来实现
音频URL,这里推荐使用 playsound(url)就可以了
- 打包的时候,不通过,检查下你的ico是不是16X16
四、代码一瞥:
# -*- coding: utf-8 -*-
# @Time : 2020-3-20 下午 23:10
# @Author : xiong
# @Site :
# @File : DailyEnglish.py
# @Software: PyCharmimport tkinter as tk
import io
import requests
from PIL import Image ,ImageTk
import datetime as Date
from playsound import playsoundclass DailyEnglish:def __init__(self):# 创建主窗口App = tk.Tk()# 设置标题App.title("每日英语 by260245435")#图标App.iconbitmap('D:\QQ飞车2.0极速版\QQ飞车\otherconfigfile\JSStudio.ico')# 设置大小和位置App.geometry('800x400+500+300')# 进入消息循环,可以写控件self.dataGet()self.create(App)App.mainloop()def dataGet(self):self.date = Date.datetime.now().date()url = 'http://sentence.iciba.com/index.php?callback=jQuery19006703403891818815_1584669649852&c=dailysentence&m=getdetail&title={}&_=1584669649854'.format(self.date)js = requests.get(url).textdata = eval(js[js.index('(') + 1:js.rindex(')')])self.sentence = data['content'] # 英文句子self.title = data['title'] # 日期self.note = data['note'] # 中文self.pic_url = data['picture'].replace('\\', '') # 图片urlself.tts_url = data['tts'].replace('\\', '') # 音频urldef playSound(self):playsound(self.tts_url)def tkImg(self ,pic_url):req = requests.get(pic_url).contentIopic = io.BytesIO(req)img = Image.open(Iopic)return ImageTk.PhotoImage(img)def create(self , App):# 日期d1 = tk.Label(App,text="Today is:" + str(self.date),font=("Comic Sans MS", 18),anchor='center')d1.pack()# 英文tkinter编写日历t1 = tk.Label(App,text=self.sentence,font=("Comic Sans MS", 18),wraplength=800,justify="left",anchor='center')t1.pack()# 中文t2 = tk.Label(App,text=self.note, font=("华为楷体", 18),wraplength=800,justify="left",anchor='center')t2.pack()#图片global img1img1 = self.tkImg(self.pic_url)lImg = tk.Label(App,image=img1 ,anchor='center',bg='black')lImg.pack()#按钮btn = tk.Button(App,text='朗读', command=self.playSound)btn.pack()if __name__ == "__main__":DailyEnglish()
核心代码并不多,大家也可以尝试下,或者提出不同的看法。
用Tkinter做一个每日英语的程序相关推荐
- 臻好黄金百香果苗做一个有脑子的程序员
程序员是最理性的一个群人,除非面对电子产品的时. 程序员是一群高智商的群体,唯一的缺点就是发际线总是很难防守. 程序员是一群情商比较低的人群,常常看到程序员仅仅因为对技术的理解不同而大吵起来. 程序员 ...
- 争取做一个良性循环的程序员
争取做一个良性循环的程序员,莫让恶性循环上身. 以下阐述仅仅的是个人的想法和意见!觉得有说的不对的地方您老人家可以随手关掉页面,顺便可以嘀咕一句(太水了,简直就是胡诌)!^_^ 一:需求与概要 一点1 ...
- 要怎么样做一个合格点的程序猿呢?
要怎么样做一个合格点的程序猿呢? 把编程当做人生来看,磨刀不误砍柴工.看完设计模式以后,就算以后设计不出很精巧的模式,我也会先仔细想好,仔细研究透了需求,分析透了设计,再写代码,不然的话,后期的维护, ...
- 使用 Vue3 + elementPlus 做一个每日习惯打卡表
使用 Vue3 + elementPlus 做一个每日习惯打卡表 github 链接 最新代码会在 github 更新 最近在看<富兰克林自传>,看到一篇文章叫<13个成就一生的习惯 ...
- 用C++做一个特小型恶意程序
用C++做一个特小型恶意程序 #include <windows.h> #include <ctime> #include <cstdlib> using name ...
- [xia谈]做一个爱家的程序员
我说我要买车的话就买BYD F0,轻巧,油耗低,简单.我老婆说我现在是这种想法,过几年就不这样想了,那个时候会喜欢大气的车,那是男人成功的标志. "我现在就很成功了!"我老婆笑我& ...
- ai绘画知识:做一个AI绘画小程序要花多少钱?
ai绘画彻底火了,赛道一度火过了当年的短视频行业.目前AI绘画以依托于微信小程序为主.如数画.意间.无界版图.灵境.6PEN.盗梦师这些AI绘画小程序清一色是10月份后上线.仅仅两月时间,但都已圈的用 ...
- 微店铺是什么?做一个微店铺小程序的流程
微店铺是什么? 微店铺是指在微信平台上主要通过微信小程序方式创建的一个在线店铺.微店铺和传统的电商平台相比,具有更低的成本.更好的管理.更便捷的体验等优点,同时也有利于商家与用户之间的互动和沟通. 如 ...
- 零基础做一个微信答题小程序(四)
嗨!大家好,我是小蚂蚁.这一节里,我们继续分享如何在答完题后进行答案的比对,以及如何实现一个回顾功能. 在上一节里我们提到过,为了记录玩家的答题数据,我们创建了一个新的表格--玩家答题选项表,里面记录 ...
最新文章
- HDU1671-Phone List (trie树)
- 插入顶部_轻巧的衣领插入技术
- 按网络中计算机所处的,按照网络中计算机所处的地位划分,计算机网络包括
- ECCV 2020 Oral | BorderDet : 用边界特征做检测
- 新空间,新文章,新气象,哈??
- POJ1958 Strange Towers of Hanoi [递推]
- 奇异值分解与低秩矩阵近似
- LC3无重复最长字串
- redis zset怎么排序_关于Redis(一)
- html5游戏生成apk,html5 如何打包成apk
- centos7 默认中文字体_centos7安装中文宋体
- 成语秀才小程序部署问题总结
- Android 快递接口
- EasyCVR通过GB28181级联到紫光华智综合安防应用平台无法注册成功问题排查
- 数据来源渠道及采集工具_几款简单好用的爬虫抓取数据采集工具
- navicate Premium 16连接阿里云云数据库RDS
- 配置org.springframework.scheduling.quartz.CronTriggerBean (转载)
- 人脸识别(二) 人脸1V1,PK明星脸
- MCNP6中Fmesh卡使用简单感想
- 曼尼托巴大学计算机科学世界排名,曼尼托巴大学世界排名多少