一万点暴击伤害

人懒起来太可怕了,放了个十一充分激发了我的惰性。然后公众号就这么停了半个月,好惭愧…
新学期儿子的幼儿园上线了APP,每天作业通过app布置后,家长需要陪着孩子学习,并上传视频才算完成作业。来看看今天的课后作业吧:

看到最后的千字文,我就瞬间崩溃了,别说教孩子,我自己都一堆字不认识。老婆就是因为很多字需要手机查嫌麻烦,才把辅导孩子的任务甩给了我。平时我们中英文翻译的时候,经常使用百度翻译,那么今天我们使用Python来做一个自动注音的GUI工具吧!

Python的拼音模块

Python的模块库API,每次进去习惯第一动作,就是右键翻译为中文。可Python的拼音模块不需要这么做,因为涉及拼音等模块肯定和中文有关系,文档自然是中文的喽。
那么Python的拼音模块是什么? pypinyin

  • 特性

根据词组智能匹配最正确的拼音。
支持多音字。
简单的繁体支持, 注音支持。
支持多种不同拼音/注音风格。

  • 安装

pip install pypinyin

  • 使用示例
>>> from pypinyin import pinyin, lazy_pinyin, Style
>>> pinyin('中心')
[['zhōng'], ['xīn']]
>>> pinyin('中心', heteronym=True)  # 启用多音字模式
[['zhōng', 'zhòng'], ['xīn']]
>>> pinyin('中心', style=Style.FIRST_LETTER)  # 设置拼音风格
[['z'], ['x']]
>>> pinyin('中心', style=Style.TONE2, heteronym=True)
[['zho1ng', 'zho4ng'], ['xi1n']]
>>> pinyin('中心', style=Style.BOPOMOFO)  # 注音风格
[['ㄓㄨㄥ'], ['ㄒㄧㄣ']]
>>> pinyin('中心', style=Style.CYRILLIC)  # 俄语字母风格
[['чжун1'], ['синь1']]
>>> lazy_pinyin('中心')  # 不考虑多音字的情况
['zhong', 'xin']
# Python 3(Python 2 下把 '中心' 替换为 u'中心' 即可):

tkinter的宽与高

    from tkinter import *def center_window(width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)root.geometry(size)root = Tk()center_window(700, 700)root.mainloop()

上面是一个tkinter设置程序居中的简单代码,其中700 700为宽高的px值,在这里没什么问题,但宽高一直都是px值么?
答案是否定的!
Text(frame, width=80, height=20, borderwidth=2, font=('黑体', '11'))
当我们使用Text文本标签时,width和height代表的是容纳字符的长度与高度。这里width代表设置80个字符的宽度,height为20个字符的高度。

程序实现

让我们先来看看实现效果吧:

界面设计

GUI的界面比较简单,只需要有一个用户文本输入,翻译按钮,结果输出即可。
可以看到说明、待注音汉字、执行结果都通过**LabelFrame**进行包裹,主要是为了美观。

整体代码

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @WeChat   : King_Uranus
# @公众号    : 清风Python
# @GitHub   : https://github.com/BreezePython
# @Date     : 2019/10/10 23:19
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : WordsToPinyin.pyfrom tkinter import *
from pypinyin import pinyinclass WordsToPinyin:def __init__(self, master=None):self.root = masterself.user_input = Noneself.translation = Nonedef create_frame(self, text_info):frame = LabelFrame(self.root, text=text_info, font=('黑体', '11'), fg='red')frame.grid(padx=10, pady=10, sticky=NSEW)return framedef notice(self):frame = self.create_frame('说明')info = "欢迎使用【清风Python】汉语注音工具\n请将待注音的汉字或句子,填写在下方的文本框内"note = Label(frame, text=info, justify=LEFT, font=('黑体', '11'))note.grid(sticky=EW)def user_words(self):frame = self.create_frame('待注音汉字')self.user_input = Text(frame, width=80, height=10, borderwidth=2, font=('黑体', '11'))self.user_input.grid(padx=10, pady=5)@staticmethoddef split_words(words):word_list = ""tmp = ""for string in words:if len(bytes(string, 'utf-8')) == 3 and len(string) == 1:if tmp != '':word_list += tmp.ljust(6)tmp = ""word_list += string.ljust(5)else:tmp += stringreturn word_listdef translate(self):self.translation.delete(0.0, END)total_info = ''info = self.user_input.get(1.0, END).split('\n')for line in info:if not line:continuea = self.split_words(line)total_info += ''.join(map(lambda x: x[0].ljust(6), pinyin(line))) + '\n'total_info += a + '\n'self.translation.insert(1.0, total_info)def start_translate(self):b = Button(self.root, text='开始注音', width=15, command=self.translate)b.grid()def result_info(self):frame = self.create_frame('执行结果')self.translation = Text(frame, width=80, height=20, borderwidth=2, font=('黑体', '11'))self.translation.grid(padx=10, pady=5)if __name__ == '__main__':def center_window(width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)root.geometry(size)root = Tk()center_window(700, 700)root.resizable(width=False, height=False)root.title('清风Python--汉字注音工具')Main = WordsToPinyin(root)Main.notice()Main.user_words()Main.start_translate()Main.result_info()root.mainloop()

程序打包

为了之后使用方便,我们可以通过pyinstaller将小程序打包成exe工具,这样就可以在电脑上直接使用了!

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
公众号回复拼音即可获取整体代码及打包好的exe工具。
当然如果你是Pythoner欢迎访问我的github下载:https://github.com/BreezePython
期待你关注我的公众号 清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
作者:清风Python

目不识丁的我使用Python编写汉字注音小工具相关推荐

  1. 用python写汉字_目不识丁的我使用Python编写汉字注音小工具

    一万点暴击伤害 人懒起来太可怕了,放了个十一充分激发了我的惰性.然后公众号就这么停了半个月,好惭愧- 新学期儿子的幼儿园上线了APP,每天作业通过app布置后,家长需要陪着孩子学习,并上传视频才算完成 ...

  2. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

    Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...

  3. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...

    每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...

  4. 【Android 逆向】使用 Python 编写 APK 批处理分析工具

    文章目录 一.涉及到的工具和脚本 二.使用 Python 编写 APK重打包工具 三.博客源码 一.涉及到的工具和脚本 apktool.jar : 反编译 APK 文件使用到的工具 ; 参考 [And ...

  5. c++编写手机小游戏代码_只需22行代码,用python编写自己的小游戏

    假期最后一天,有些人在外面玩累了,有些人躺在家里快发霉了,闲暇时候不如动动手做个小游戏玩一玩吧! 本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 1 import ...

  6. python网页编程测试_李亚涛:python编写友情链接检测工具

    原标题:李亚涛:python编写友情链接检测工具 友情链接是网站外链的非常重要的来源,作为一个网站运营推广人员,需要定期对网站的友链进行更新与检查,如果有人下掉你的链接,这样你可以及时的检测并清除掉. ...

  7. 用Python编写博客导出工具

    用Python编写博客导出工具 罗朝辉 (http://kesalin.github.io/) CC 许可,转载请注明出处 写在前面的话 我在 github 上用 octopress 搭建了个人博客, ...

  8. python开发软件的实例-由Python编写的MySQL管理工具代码实例

    本文实例为大家分享了由Python编写的MySQL管理工具的具体代码,供大家参考,具体内容如下 import pymysql import pandas as pd from tkinter impo ...

  9. 请用python编写一个斗地主小游戏,并给出完整代码

    很高兴为您服务!这是一个使用Python编写的斗地主小游戏的完整代码:# 导入必备模块 import random# 定义一副牌 poker = ['A', 2, 3, 4, 5, 6, 7, 8, ...

最新文章

  1. Java中 多态的理解
  2. maven进行junit测试时报错(二)
  3. 一看就明白的爬虫入门讲解-基础理论篇(下篇)
  4. 详解C++代码反汇编后的堆栈寄存器EBP和ESP
  5. PHP怎样表示几时几分,PHP将时间戳转换为刚刚、N分钟前、今天几点几分、昨天几点几分......
  6. 【代码刷题】排序算法总结(python实现)
  7. ROS入门-4.安装ROS系统(ubuntu20.04版本安装ros的noetic版本)
  8. Sublime Merge for Mac(git客户端软件)2064
  9. 个性推荐①——系统总结个性化推荐系统
  10. 云计算就业薪资怎么样 如何加入云计算行列
  11. Python爬虫系列之得物小程序data算法
  12. 2019JAVA面试题精粹附答案
  13. 拉丁超立方抽样方法 LHS
  14. ESP8266模块睡眠模式
  15. 天的各种书法_你可知道书法里的各种关系?
  16. 如何写好技术部门的年度 OKR
  17. 一键去除txt文本重复行(带界面版)
  18. Matlab学习——曲柄滑块的运动仿真
  19. 等级保护二、三、四级内容及对比
  20. Win11如果在桌面右击新建没有文本文档

热门文章

  1. 多传感器融合SLAM研究和学习专栏汇总
  2. 翼虎 android,福特翼虎成首款同时兼容CarPlay和Android Auto的车型
  3. springmvc java中转发_springmvc实现转发和重定向
  4. Sentinel2A影像监测家乡油菜长势!!
  5. input和textarea的区别
  6. DEV控件:gridControl常用属性设置
  7. 可以学习的国外课件链接地址(自己收集)
  8. CCF201703-2 学生排队
  9. 贪心——无重叠区间(Leetcode 435)
  10. 并查集——家谱(洛谷 P2814)