用Tkinter做一个每日英语的程序

Serena ·
更新时间:2024-09-21
· 861 次阅读

一、准备:

安装以下库:

Tkinter requests pillow playsound pyinstaller 二、步骤分析:

找到一个合适的接口,获取推送每日英语的数据。
作者在网上看了一些API,没有比较合适的,就自己找了个接口,金山词典的每日一句:
点我点我^v^: 传送门

看起来很舒服的,省去了不少麻烦,进入传送门就是我们需要的数据,每次请求数据的时候只用改下日期就可以了图片1

接下来的任务就是,利用Tkinter撸个简单界面出来。通过请求返回的数据可以添加文字和美图和语音
图片2

项目打包,这里我们选择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: PyCharm import tkinter as tk import io import requests from PIL import Image ,ImageTk import datetime as Date from playsound import playsound class 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).text data = 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('\\', '') # 图片url self.tts_url = data['tts'].replace('\\', '') # 音频url def playSound(self): playsound(self.tts_url) def tkImg(self ,pic_url): req = requests.get(pic_url).content Iopic = 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 img1 img1 = 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 英语

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章
Jennifer 2021-01-29
659