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

以后别再认字认半边啦

“不会念的字读半边”和“不会做的题全蒙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欢乐时光

大家一起学Python

8篇原创内容

公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值