以后别再认字认半边啦
“不会念的字读半边”和“不会做的题全蒙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.3 from tkinter import * from pypinyin import pinyin class ChinesePhoneticNotation: def __init__(self, win): self.win = win self.text_input = None self.text_output = None def creat_window(self): # 设置标题 self.win.title('汉字注音 - 微信公众号 > Python欢乐时光') # 设置窗口大小 width = 780 height = 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篇原创内容
公众号