以后别再认字认半边啦

“不会念的字读半边”和“不会做的题全蒙C”,这是学生时代的必备的两大求生技能。

只要没傻到把“魑魅魍魉”猜成“鬼鬼鬼鬼”,读另一半“离未网两”,就有50%的正确几率。

复旦教授陈果曾把“耄耋之年”读成了“毛至”之年,在社交网络被刷了屏。客观地说,人非圣贤,孰能无过;哪怕是常见的知识,我们也可能存在盲点,这不少见。更何况,像陈老师这种“读半边”的习惯,也许很多人都有哦。

读字读半边,经常被运用到影视作品里,当成搞笑的桥段。

这波操作真是令人窒息。故今天带大家来做一个汉字注音的小工具,有了这个DIY工具,妈妈再也不用担心我出糗了

理清思路

利用 tkinter 模块开发用户交互界面

  • 界面设计

    本工具界面比较简单,一共就用到了三种类型的控件-Label、Button、Text。共同组成用户界面的输入模块、执行按钮、输出模块三个部分

利用 pypinyin 模块为汉字注音

  • pypinyin 简单介绍

    Python 中提供了汉字转拼音的库,名字叫做 PyPinyin,可以用于汉字注音、排序、检索等等场合

  • 安装

    使用pip进行安装,安装命令如下:pip install pypinyin

  • 特性

  • 根据词组智能匹配最正确的拼音。

  • 支持多音字。

  • 简单的繁体支持, 注音支持。

  • 支持多种不同拼音/注音风格。

  • 简单示例

用pyinstaller 将代码打包成.exe可执行程序

为了能让大家直接在window系统上运行我们这个小工具,我用pyinstaller将编写的代码打包成了exe工具,这样就可以直接在电脑上双击使用了,非常便利

完整代码及运行效果

  • 完整代码如下

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Author   : 陈龙
    # @公众号   : Python欢乐时光
    # @Date     : 2021/07/28 22:16
    # @Software : PyCharm
    # @Version  : Python 3.7.3from tkinter import *
    from pypinyin import pinyinclass ChinesePhoneticNotation:def __init__(self, win):self.win = winself.text_input = Noneself.text_output = Nonedef creat_window(self):# 设置标题self.win.title('汉字注音 - 微信公众号 > Python欢乐时光')# 设置窗口大小width = 780height = 800# 获取屏幕尺寸以计算布局参数,使窗口居屏幕中央screenwidth = self.win.winfo_screenwidth()screenheight = self.win.winfo_screenheight()alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)self.win.geometry(alignstr)# 设置窗口是否可变长、宽,True:可变,False:不可变self.win.resizable(width=False, height=False)def creat_title(self):# 创建 Label 标签控件 及 控件布局label = Label(self.win, bg="green",text='欢迎使用 Python欢乐时光 注音小工具',font=('隶书', 15, 'bold underline'))label.grid(row=0, columnspan=2, pady=10)def creat_input_text(self):label = Label(self.win, text='待注音汉字', justify=LEFT, bg="lightyellow")label.grid(row=1, column=0, padx=20, sticky=W)# 创建 汉字 Text 文本控件 及 控件布局self.text_input = Text(self.win, width=100)self.text_input.grid(row=2, column=0, padx=20, pady=5)# 创建 汉字滚动条 及 汉字滚动条关联scroll_hanzi = Scrollbar()scroll_hanzi.grid(row=2, column=1, sticky=N + S + W)scroll_hanzi.config(command=self.text_input.yview)self.text_input.config(yscrollcommand=scroll_hanzi.set)def creat_button(self):# 创建 注音按钮 及 按钮布局button = Button(self.win, width=20, text='开始注音', command=self.start_phonetic)button.grid(row=3, columnspan=2, pady=10)def creat_output_text(self):label = Label(self.win, text='注音结果', justify=LEFT, bg="lightyellow")label.grid(row=4, column=0, padx=20, sticky=W)# 创建 注音 Text 文本控件 及 控件布局self.text_output = Text(self.win, width=100)self.text_output.grid(row=5, column=0, padx=20, pady=5)# 创建 注音滚动条 及 注音滚动条关联scroll_pinyin = Scrollbar()scroll_pinyin.grid(row=5, column=1, sticky=N + S + W)scroll_pinyin.config(command=self.text_output.yview)self.text_output.config(yscrollcommand=scroll_pinyin.set)def start_phonetic(self):result_info = ""self.text_output.delete(1.0, END)   # 清空output文本框input_info = self.text_input.get(1.0, END).split('\n')  # 获取用户输入for line in input_info:if not line:continue# 利用正则匹配字符串中的所有中文字符, '[\u4e00-\u9fa5]' 匹配中文tmp = re.findall(r'[\u4e00-\u9fa5]', line.strip())chinese_characters = ''.join(tmp)result_info += ' '.join(map(lambda x:x[0].ljust(6), pinyin(chinese_characters))) + '\n'result_info += ' '.join(map(lambda x:x.ljust(5), chinese_characters)) + '\n'self.text_output.insert(1.0, result_info)def main():win = Tk()obj_tool = ChinesePhoneticNotation(win)obj_tool.creat_window()obj_tool.creat_title()obj_tool.creat_input_text()obj_tool.creat_button()obj_tool.creat_output_text()# 进入消息循环win.mainloop()if __name__ == '__main__':main()
  • 工具运行效果

    待注音汉字使用的是一首歌的歌词 - 《生僻字》,感觉这首歌的旋律还不错,喜欢听歌的朋友可以去搜索一下这首歌,看看里面的歌词你能认识多少,哈哈

结尾

如果觉得这篇文章还不错的话,欢迎点击文章右下角的“在看”, 期待您关注我的公众号 Python欢乐时光,转发给你身边有需要的朋友们。另外,本篇文章中涉及的代码及可执行exe我都打包上传至百度云,公众号下方回复 注音 获取下载地址。谢谢大家!

Python欢乐时光

大家一起学Python

8篇原创内容

公众号

以后别再认字认半边啦,DIY注音小工具,让你以后不再出糗相关推荐

  1. java 修改源码_再谈给应用程序diy启动画面和java源代码补丁修改

    再谈给应用程序diy启动画面和java源代码补丁修改 2006-8-21 16:18 6365 再谈给应用程序diy启动画面和java源代码补丁修改 2006-8-21 16:18 6365 搞diy ...

  2. 开发商微信选房后不退认筹金_新楼盘开盘的“认筹”和“认购”,劝您看懂后再去认!...

    各大开发商,包括运城在内的,他们在新楼盘开盘时都会出现"认筹"."认购"字样,可是,您具体清楚是什么意思吗?建议您了解清楚以后再决定认不认-- 认筹: 认筹是开 ...

  3. 别再Ctrl+V啦!用Python这个工具30分钟帮你干完一天的工作!

    而对这些任务的处理方式,可以体现出你的工作态度和工作潜力. 有的人不断寻找最优解,最终将自己从这些事项中解脱出来:有些人还是习惯用老方法,在简单的复制粘贴中消耗时光,让人唏嘘. 前段时间,朋友娜娜跟我 ...

  4. 用Python写了个小工具,再复杂的文件夹,分分钟帮你整理!

    糟透了 我承认我不是一个爱整理桌面的人,因为我觉得乱糟糟的桌面,反而容易找到文件. 哈哈,可是最近桌面实在是太乱了,自己都看不下去了,几乎占满了整个屏幕.虽然一键整理桌面的软件很多,但是对于其他路径下 ...

  5. 日常生活中总结出来的DIY生活小窍门

    5-Minute Crafts 出品 日常生活中总结出来的DIY生活小窍门 化妆 height="498" width="510" src="http ...

  6. 家用使用计算机组装,不能再简单了!家用电脑DIY组装实操

    [天极网DIY硬件频道][天极网硬件频道]近期有网友对DIY组装电脑比较感兴趣,因为自从智能手机和平板电脑横行霸道之后,家中的PC电脑被使用的时间变少了许多,可是偶尔有工作需求或是别有任务等,所以大家 ...

  7. 老司机带你飞——DIY桌面小电视

    桌面小电视 本期福利 活动规则: [1]添加客服微信(xutoubee)领取作品开源资料 [2]转发该篇文章到朋友圈,并停留30分钟,凭截图联系客服微信,进群参与抽奖(免费送作品)     活动截止时 ...

  8. 不要再用arxiv链接了!为了让论文引用更规范,上交毕业生、南加州大学华人博士创建了一个小工具...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨魔王 编辑丨机器之心 只需两步,将文献的 arXiv 信息转换为正式来源信息. 伴随着预印本平台 ...

  9. RedOffice教你DIY环保小日历

    新一代的RedOffice 办公软件提供了丰富的模板资源,它可以美化并使您的文档脱颖而出.不过今天我们不是要美化文档,而是教您一个巧用模板的方法:制作环保小日历. 您可以在RedOffice 办公软件 ...

最新文章

  1. AI一分钟 | 马斯克:特斯拉内部有人故意搞破坏;亚马逊推出酒店定制版Alexa
  2. YunTable开发日记(3) – BigTable的数据模型和调用接口 (转载)
  3. linux查看进程和线程的命令
  4. centos安装mysql5.7.26_Centos安装mysql5.7.26
  5. idea java 快捷键_图示Javahtml5开发中IDEA的一些常用默认快捷键
  6. android logo:内核、android开机动画
  7. matlab gui编写计算器,怎样用MATLAB中的GUI做一个简单计算器
  8. TortoiseGit 添加ssh key
  9. Python之集合(综合练习)
  10. IntelliJ Save Action
  11. Android中ListView下拉刷新的实现
  12. 小学语文三年级阅读理解专项练习附答案~水上飞机
  13. 2019最实用的8种精准微信引流方法教程
  14. Android基础知识点学习总结
  15. DocArray 0.21.0版本发布!新增OpenSearch后端存储,支持Redis后端存储的多语言文本搜索!...
  16. Chronometer实现计时器 开始、暂停、停止功能
  17. PlayFair密码原理、代码
  18. 效果超好的自制美白面膜大汇总 - 健康程序员,至尚生活!
  19. Python学习笔记 - 探索while无限迭代循环
  20. 青龙面板获取京东ck的新老方法

热门文章

  1. 递归(A调用A)和迭代(A调用B的结果)区别
  2. grub命令磁盘管理
  3. 公积金服务网建设方案(节选)
  4. 计数原理,组合的化简
  5. pyinstaller打包python应用之方法(含打包图片资源)
  6. 水星路由器正在连接云服务器,水星路由器mw351r拨号一直正在连接怎么办
  7. 硝酸硫胺素-市场现状及未来发展趋势
  8. Android设备如何进行命令行操作
  9. docker 容器技术
  10. Master Of Typing帮你快速提升打字速度!